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) 2024, 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: $2024-02-14
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 // Místo pro Vaše případné includy, používejte pouze standardní knihovnu tak, aby nebylo nutno upravovat CMake.
26 
30 struct Node{
31  size_t id;
32  size_t color;
33  // doplňte vhodné struktury, pokud potřebujete
34 };
35 
42 class Edge{
43 public:
44  size_t a;
45  size_t b;
46 
52  Edge(size_t a, size_t b) : a(a), b(b) { }
53 
59  bool operator==(const Edge& other) const{
60  return (a == other.a && b == other.b) || (a == other.b && b == other.a);
61  }
62 
68  bool operator!=(const Edge& other) const{
69  return !(*this == other);
70  }
71 
78  friend std::ostream& operator<<(std::ostream& os, const Edge& e) {
79  return os << "{" << e.a << ", " << e.b << "}";
80  }
81 };
82 
87 class Graph{
88 public:
89 
93  Graph();
94 
98  ~Graph();
99 
103  std::vector<Node*> nodes();
104 
108  std::vector<Edge> edges() const;
109 
117  Node* addNode(size_t nodeId);
118 
126  bool addEdge(const Edge& edge);
127 
134  void addMultipleEdges(const std::vector<Edge>& edges);
135 
141  Node* getNode(size_t nodeId);
142 
148  bool containsEdge(const Edge& edge) const;
149 
156  void removeNode(size_t nodeId);
157 
164  void removeEdge(const Edge& edge);
165 
169  size_t nodeCount() const;
170 
174  size_t edgeCount() const;
175 
183  size_t nodeDegree(size_t nodeId) const;
184 
188  size_t graphDegree() const;
189 
198  void coloring();
199 
203  void clear();
204 
205 protected:
206  // doplňte vhodné struktury
207 
208 };
209 
210 #endif // TDD_CODE_H_
211 
212 /*** Konec souboru tdd_code.h ***/
Node
reprezentace uzlu
Definition: tdd_code.h:30
Edge::a
size_t a
id uzlu a
Definition: tdd_code.h:44
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:31
Graph::edges
std::vector< Edge > edges() const
Definition: tdd_code.cpp:30
Edge::b
size_t b
id uzlu b
Definition: tdd_code.h:45
Edge::Edge
Edge(size_t a, size_t b)
Konstruktor hrany.
Definition: tdd_code.h:52
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:78
Edge::operator==
bool operator==(const Edge &other) const
Porovnávání hran.
Definition: tdd_code.h:59
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:42
Edge::operator!=
bool operator!=(const Edge &other) const
Porovnávání hran.
Definition: tdd_code.h:68
Graph
Třída reprezentující neorientovaný graf bez smyček.
Definition: tdd_code.h:87
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:32
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