Prakticke aspekty vývoje softwaru: Projekt 1 – Testování  1.0
Projekt zaměřený na osvojení praktik testování včetně technik test driven development, black box testing a white box testing.
tdd_code.h
Zobrazit dokumentaci tohoto souboru.
1 //======== Copyright (c) 2023, FIT VUT Brno, All rights reserved. ============//
2 //
3 // Purpose: Test Driven Development - graph
4 //
5 // $NoKeywords: $ivs_project_1 $tdd_code.h
6 // $Author: JMENO PRIJMENI <xlogin00@stud.fit.vutbr.cz>
7 // $Date: $2023-03-07
8 //============================================================================//
16 #pragma once
17 
18 #ifndef TDD_CODE_H_
19 #define TDD_CODE_H_
20 
21 #include <vector>
22 #include <stdexcept>
23 #include <iostream>
24 
25 
29 struct Node{
30  size_t id;
31  size_t color;
32  // doplňte vhodné struktury, pokud potřebujete
33 };
34 
41 class Edge{
42 public:
43  size_t a;
44  size_t b;
45 
51  Edge(size_t a, size_t b) : a(a), b(b) { }
52 
58  bool operator==(const Edge& other) const{
59  return (a == other.a && b == other.b) || (a == other.b && b == other.a);
60  }
61 
67  bool operator!=(const Edge& other) const{
68  return !(*this == other);
69  }
70 
77  friend std::ostream& operator<<(std::ostream& os, const Edge& e) {
78  return os << "{" << e.a << ", " << e.b << "}";
79  }
80 };
81 
86 class Graph{
87 public:
88 
92  Graph();
93 
97  ~Graph();
98 
102  std::vector<Node*> nodes();
103 
107  std::vector<Edge> edges() const;
108 
116  Node* addNode(size_t nodeId);
117 
125  bool addEdge(const Edge& edge);
126 
133  void addMultipleEdges(const std::vector<Edge>& edges);
134 
140  Node* getNode(size_t nodeId);
141 
147  bool containsEdge(const Edge& edge) const;
148 
155  void removeNode(size_t nodeId);
156 
163  void removeEdge(const Edge& edge);
164 
168  size_t nodeCount() const;
169 
173  size_t edgeCount() const;
174 
182  size_t nodeDegree(size_t nodeId) const;
183 
187  size_t graphDegree() const;
188 
197  void coloring();
198 
202  void clear();
203 
204 protected:
205  // doplňte vhodné struktury
206 
207 };
208 
209 #endif // TDD_CODE_H_
210 
211 /*** Konec souboru tdd_code.h ***/
Node
reprezentace uzlu
Definition: tdd_code.h:29
Edge::a
size_t a
id uzlu a
Definition: tdd_code.h:43
Graph::removeEdge
void removeEdge(const Edge &edge)
odstraní hranu z grafu
Definition: tdd_code.cpp:60
Graph::coloring
void coloring()
Provede obarvení uzlů v grafu.
Definition: tdd_code.cpp:79
Graph::edgeCount
size_t edgeCount() const
Definition: tdd_code.cpp:67
Node::id
size_t id
jednoznačný identifikátor uzlu
Definition: tdd_code.h:30
Graph::edges
std::vector< Edge > edges() const
Definition: tdd_code.cpp:30
Edge::b
size_t b
id uzlu b
Definition: tdd_code.h:44
Edge::Edge
Edge(size_t a, size_t b)
Konstruktor hrany.
Definition: tdd_code.h:51
Graph::nodeDegree
size_t nodeDegree(size_t nodeId) const
stupeň uzlu
Definition: tdd_code.cpp:71
Graph::addEdge
bool addEdge(const Edge &edge)
Přidá hranu do grafu.
Definition: tdd_code.cpp:40
Graph::graphDegree
size_t graphDegree() const
Definition: tdd_code.cpp:75
Graph::Graph
Graph()
konstruktor prázdného grafu
Definition: tdd_code.cpp:20
Edge::operator<<
friend std::ostream & operator<<(std::ostream &os, const Edge &e)
Vypíše hranu do streamu.
Definition: tdd_code.h:77
Edge::operator==
bool operator==(const Edge &other) const
Porovnávání hran.
Definition: tdd_code.h:58
Graph::addMultipleEdges
void addMultipleEdges(const std::vector< Edge > &edges)
Naplní graf z vektoru hran.
Definition: tdd_code.cpp:45
Graph::removeNode
void removeNode(size_t nodeId)
odstraní uzel z grafu
Definition: tdd_code.cpp:57
Graph::clear
void clear()
Smazání všech uzlů a hran v grafu.
Definition: tdd_code.cpp:82
Graph::containsEdge
bool containsEdge(const Edge &edge) const
Zjistí, zda hrana existuje v grafu.
Definition: tdd_code.cpp:53
Edge
reprezentace hrany
Definition: tdd_code.h:41
Edge::operator!=
bool operator!=(const Edge &other) const
Porovnávání hran.
Definition: tdd_code.h:67
Graph
Třída reprezentující neorientovaný graf bez smyček.
Definition: tdd_code.h:86
Graph::addNode
Node * addNode(size_t nodeId)
Přidá uzel s daným id do grafu a vrátí ukazatel na vytvořený uzel.
Definition: tdd_code.cpp:36
Graph::nodeCount
size_t nodeCount() const
Definition: tdd_code.cpp:63
Node::color
size_t color
celé číslo reprezentující barvu uzlu, výchozí barva je 0 a značí neobarveno
Definition: tdd_code.h:31
Graph::nodes
std::vector< Node * > nodes()
Definition: tdd_code.cpp:24
Graph::~Graph
~Graph()
destruktor grafu
Definition: tdd_code.cpp:22
Graph::getNode
Node * getNode(size_t nodeId)
Vrátí ukazatel na uzel s daným id.
Definition: tdd_code.cpp:49