Compare commits

...

2 Commits

Author SHA1 Message Date
6da791d7bb master > master: code-rust - Bsp hinzugefügt 2022-04-13 23:13:14 +02:00
4b2c73b9f8 master > master: README 2022-04-13 23:12:37 +02:00
2 changed files with 42 additions and 16 deletions

View File

@ -18,28 +18,33 @@ die Methoden mit Daten ausprobieren.
## Build -> Test -> Run ## ## Build -> Test -> Run ##
Navigiere im IDE zum [rust](/)-Ordner in deinem IDE. In einem IDE in dem Repo zu diesem Ordner navigieren.
Öffne eine bash-Konsole und führe folgende Befehle aus: </br>
Eine bash-Konsole aufmachen und folgende Befehle ausführen:
Wer **make** hat: Wer **make** installiert hat:
```bash ```bash
# zum Kompilieren (nur nach Änderungen nötig): # Zum Kompilieren (nur nach Änderungen nötig):
make build; make build;
# zur Ausführung der unit tests: # Zur Ausführung der unit tests:
make tests; make tests;
# zur Ausführung des Programms # Zur Ausführung des Programms
make run; make run;
# zur Bereinigung aller Artefakte # Zur Bereinigung aller Artefakte
make clean; make clean;
``` ```
Wer _kein_ make hat: Wer _kein_ make hat:
```bash ```bash
# zum Kompilieren (nur nach Änderungen nötig): # Zum Kompilieren (nur nach Änderungen nötig):
cargo build --release; cargo build --release;
# zur Ausführung der unit tests: # Zur Ausführung der unit tests:
cargo test; cargo test;
# zur Ausführung des Programms # Zur Ausführung des Programms:
dist/ads2 # oder den gebauten Artefakt mit Maus doppelklicken ./dist/ads2
# bzw. ads2.exe für Windows.
# Alternativ kann man den gebauten Artefakt per doppelklicken ausführen.
``` ```
Der `build` Schritt baut einen binären Artefekt Der `build` Schritt baut einen binären Artefakt
und kopiert dies nach dem [./dist/*](dist/) Ordner. und kopiert dies nach dem [./dist/*](dist/) Ordner.
Man kann auch mit einem guten Editor/IDE die Tests einzeln ausführen.

View File

@ -31,6 +31,28 @@ fn fixture_graph2() -> graph::Graph<i32> {
); );
} }
#[fixture]
fn fixture_graph3() -> graph::Graph<i32> {
return graph::Graph::<i32>::new(
vec![1,2,3,4,5,6,7,8],
vec![
(1,2),
(1,3),
(2,4),
(2,5),
(3,5),
(3,6),
(3,8),
(4,5),
(4,7),
(5,1),
(5,8),
(6,8),
(7,8),
],
);
}
// ---------------------------------------------------------------- // ----------------------------------------------------------------
// Test Graph // Test Graph
// ---------------------------------------------------------------- // ----------------------------------------------------------------
@ -38,13 +60,12 @@ fn fixture_graph2() -> graph::Graph<i32> {
#[rstest] #[rstest]
#[case(fixture_graph1(), vec![vec![1], vec![3], vec![2,4]])] #[case(fixture_graph1(), vec![vec![1], vec![3], vec![2,4]])]
#[case(fixture_graph2(), vec![vec![1], vec![6], vec![7], vec![2,3,4,5]])] #[case(fixture_graph2(), vec![vec![1], vec![6], vec![7], vec![2,3,4,5]])]
#[case(fixture_graph3(), vec![vec![8], vec![7], vec![6], vec![3, 5, 4, 2, 1]])]
fn test_tarjan<T>(#[case] gph: graph::Graph<T>, #[case] expected: Vec<Vec<T>>) fn test_tarjan<T>(#[case] gph: graph::Graph<T>, #[case] expected: Vec<Vec<T>>)
where T: Eq + Hash + Clone + Display where T: Eq + Hash + Clone + Display
{ {
assert_components_eq( let components = tarjan::tarjan_algorithm(&gph);
&tarjan::tarjan_algorithm(&gph), assert_components_eq(&components, &expected)
&expected
)
} }
// ---------------------------------------------------------------- // ----------------------------------------------------------------