From ea2454a989dd5f14c0e5a7fac3b16712a4e08cb2 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:10:25 +0200 Subject: [PATCH 01/15] Update test template in config.json --- config.json | 2 +- .../low-power-embedded-game/.meta/config.json | 2 +- .../practice/allergies/.meta/config.json | 2 +- exercises/practice/anagram/.meta/config.json | 2 +- .../armstrong-numbers/.meta/config.json | 2 +- .../practice/beer-song/.meta/config.json | 2 +- .../practice/binary-search/.meta/config.json | 2 +- exercises/practice/clock/.meta/config.json | 2 +- .../practice/custom-set/.meta/config.json | 2 +- exercises/practice/dominoes/.meta/config.json | 2 +- .../practice/hello-world/.meta/config.json | 2 +- .../largest-series-product/.meta/config.json | 2 +- exercises/practice/leap/.meta/config.json | 2 +- exercises/practice/leap/test.sh | 34 +++++++++++++++++++ .../practice/linked-list/.meta/config.json | 2 +- .../.meta/config.json | 2 +- .../protein-translation/.meta/config.json | 2 +- .../rational-numbers/.meta/config.json | 2 +- .../robot-simulator/.meta/config.json | 2 +- .../practice/roman-numerals/.meta/config.json | 2 +- .../practice/scrabble-score/.meta/config.json | 2 +- .../semi-structured-logs/.meta/config.json | 2 +- .../simple-linked-list/.meta/config.json | 2 +- exercises/practice/sublist/.meta/config.json | 2 +- t.sh | 11 ++++++ 25 files changed, 68 insertions(+), 23 deletions(-) create mode 100755 exercises/practice/leap/test.sh create mode 100755 t.sh diff --git a/config.json b/config.json index 7a7e4d07..876d0db1 100644 --- a/config.json +++ b/config.json @@ -21,7 +21,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/concept/low-power-embedded-game/.meta/config.json b/exercises/concept/low-power-embedded-game/.meta/config.json index fbf6e622..eaedc766 100644 --- a/exercises/concept/low-power-embedded-game/.meta/config.json +++ b/exercises/concept/low-power-embedded-game/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "exemplar": [ ".meta/exemplar.cairo" diff --git a/exercises/practice/allergies/.meta/config.json b/exercises/practice/allergies/.meta/config.json index 9e1c5bbc..e7da802a 100644 --- a/exercises/practice/allergies/.meta/config.json +++ b/exercises/practice/allergies/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/anagram/.meta/config.json b/exercises/practice/anagram/.meta/config.json index 2756c19f..c4ceb651 100644 --- a/exercises/practice/anagram/.meta/config.json +++ b/exercises/practice/anagram/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/armstrong-numbers/.meta/config.json b/exercises/practice/armstrong-numbers/.meta/config.json index 4724d3dd..8d4e6792 100644 --- a/exercises/practice/armstrong-numbers/.meta/config.json +++ b/exercises/practice/armstrong-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/beer-song/.meta/config.json b/exercises/practice/beer-song/.meta/config.json index 1d16d956..2e818654 100644 --- a/exercises/practice/beer-song/.meta/config.json +++ b/exercises/practice/beer-song/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/binary-search/.meta/config.json b/exercises/practice/binary-search/.meta/config.json index 842ed376..61f6291b 100644 --- a/exercises/practice/binary-search/.meta/config.json +++ b/exercises/practice/binary-search/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/clock/.meta/config.json b/exercises/practice/clock/.meta/config.json index 9a6501b9..7883292a 100644 --- a/exercises/practice/clock/.meta/config.json +++ b/exercises/practice/clock/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/custom-set/.meta/config.json b/exercises/practice/custom-set/.meta/config.json index e93f4796..53f31826 100644 --- a/exercises/practice/custom-set/.meta/config.json +++ b/exercises/practice/custom-set/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/dominoes/.meta/config.json b/exercises/practice/dominoes/.meta/config.json index 9c731c16..b909ec04 100644 --- a/exercises/practice/dominoes/.meta/config.json +++ b/exercises/practice/dominoes/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/hello-world/.meta/config.json b/exercises/practice/hello-world/.meta/config.json index c7e88cfb..44d86c3a 100644 --- a/exercises/practice/hello-world/.meta/config.json +++ b/exercises/practice/hello-world/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/largest-series-product/.meta/config.json b/exercises/practice/largest-series-product/.meta/config.json index c0fda61e..1c7ef76e 100644 --- a/exercises/practice/largest-series-product/.meta/config.json +++ b/exercises/practice/largest-series-product/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/leap/.meta/config.json b/exercises/practice/leap/.meta/config.json index 120d45c5..958e3efa 100644 --- a/exercises/practice/leap/.meta/config.json +++ b/exercises/practice/leap/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/leap/test.sh b/exercises/practice/leap/test.sh new file mode 100755 index 00000000..8d4d544f --- /dev/null +++ b/exercises/practice/leap/test.sh @@ -0,0 +1,34 @@ +test_output=$(scarb cairo-test --include-ignored 2>&1) +results_file="./results.json" + +touch "$results_file" + +test_output=$(scarb cairo-test --include-ignored 2>&1) +exit_code=$? + +if [ ${exit_code} -eq 0 ]; then + jq -n '{version: 1, status: "pass"}' >"${results_file}" +else + # Sanitize the output + # TODO: enable if needed to escape quotes: test_output_inline=$(printf '%s' "${test_output}" | sed -r 's/\"/\\"/g') + test_output_inline=$(printf '%s' "${test_output}") + + # Try to distinguish between failing tests and errors + if echo "${test_output_inline}" | grep "error:"; then + status="error" + sanitized_test_output=$(echo "$test_output_inline" | awk '/Compiling/{y=1;next}y' | sed -n -e '/error: could not compile/q;p') + else + status="fail" + sanitized_test_output=$(echo "$test_output_inline" | awk '/failures:/{y=1;next}y' | sed -n -e '/Error: test result/q;p' | sed -r 's/ //g') + fi + + tmp_file=$(mktemp -p .) + trap 'rm $tmp_file' EXIT INT TERM + + printf "$sanitized_test_output" >"$tmp_file" + sorted_output=$(sort "$tmp_file") + + jq -n --arg output "${sorted_output}" --arg status "${status}" '{version: 1, status: $status, message: $output}' >"${results_file}" +fi + +echo "done" diff --git a/exercises/practice/linked-list/.meta/config.json b/exercises/practice/linked-list/.meta/config.json index 2f614919..cd80b9dc 100644 --- a/exercises/practice/linked-list/.meta/config.json +++ b/exercises/practice/linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/lucians-luscious-lasagna/.meta/config.json b/exercises/practice/lucians-luscious-lasagna/.meta/config.json index 3252f418..3862d0d3 100644 --- a/exercises/practice/lucians-luscious-lasagna/.meta/config.json +++ b/exercises/practice/lucians-luscious-lasagna/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/protein-translation/.meta/config.json b/exercises/practice/protein-translation/.meta/config.json index 8dfffb2e..4739995b 100644 --- a/exercises/practice/protein-translation/.meta/config.json +++ b/exercises/practice/protein-translation/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/rational-numbers/.meta/config.json b/exercises/practice/rational-numbers/.meta/config.json index a21bccaf..6a54cf19 100644 --- a/exercises/practice/rational-numbers/.meta/config.json +++ b/exercises/practice/rational-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/robot-simulator/.meta/config.json b/exercises/practice/robot-simulator/.meta/config.json index 2b21338c..6afe40fb 100644 --- a/exercises/practice/robot-simulator/.meta/config.json +++ b/exercises/practice/robot-simulator/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/roman-numerals/.meta/config.json b/exercises/practice/roman-numerals/.meta/config.json index c621aa84..06346f16 100644 --- a/exercises/practice/roman-numerals/.meta/config.json +++ b/exercises/practice/roman-numerals/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/scrabble-score/.meta/config.json b/exercises/practice/scrabble-score/.meta/config.json index 27dddb6a..8b3956c9 100644 --- a/exercises/practice/scrabble-score/.meta/config.json +++ b/exercises/practice/scrabble-score/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/semi-structured-logs/.meta/config.json b/exercises/practice/semi-structured-logs/.meta/config.json index 36dc84e7..4c3724bf 100644 --- a/exercises/practice/semi-structured-logs/.meta/config.json +++ b/exercises/practice/semi-structured-logs/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/simple-linked-list/.meta/config.json b/exercises/practice/simple-linked-list/.meta/config.json index d25bdbfd..143541f2 100644 --- a/exercises/practice/simple-linked-list/.meta/config.json +++ b/exercises/practice/simple-linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/sublist/.meta/config.json b/exercises/practice/sublist/.meta/config.json index 8b835ccf..334f7e0e 100644 --- a/exercises/practice/sublist/.meta/config.json +++ b/exercises/practice/sublist/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "src/tests.cairo" + "tests/%{kebab_slug}.cairo" ], "example": [ ".meta/example.cairo" diff --git a/t.sh b/t.sh new file mode 100755 index 00000000..a2132dc5 --- /dev/null +++ b/t.sh @@ -0,0 +1,11 @@ +# dir="./exercises/*/*" +# for exercise_dir in $dir; do +# echo "updating $exercise_dir" +# slug=$(basename $exercise_dir) +# mkdir "$exercise_dir/tests" +# mv "$exercise_dir/src/tests.cairo" "$exercise_dir/tests/$slug.cairo" + +# done + +dir="./exercises/practice/allergies" +sed -n -e '/\#\[cfg\(test\)\]/,$d' "$dir/src/lib.cairo" From 10a3d10842117b129e060b05ac28057798e25a6d Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:21:30 +0200 Subject: [PATCH 02/15] Move all tests to appropriate int. test folders --- .../low-power-embedded-game/src/lib.cairo | 3 --- .../low-power-embedded-game.cairo} | 0 .../practice/allergies/.meta/example.cairo | 3 --- exercises/practice/allergies/src/lib.cairo | 3 --- .../tests.cairo => tests/allergies.cairo} | 1 - .../practice/anagram/.meta/example.cairo | 3 --- exercises/practice/anagram/src/lib.cairo | 3 --- .../{src/tests.cairo => tests/anagram.cairo} | 0 .../armstrong-numbers/.meta/example.cairo | 3 --- .../practice/armstrong-numbers/src/lib.cairo | 3 --- .../armstrong-numbers.cairo} | 0 .../practice/beer-song/.meta/example.cairo | 5 ----- exercises/practice/beer-song/src/lib.cairo | 4 ---- .../tests.cairo => tests/beer-song.cairo} | 1 - .../binary-search/.meta/example.cairo | 3 --- .../practice/binary-search/src/lib.cairo | 3 --- .../tests.cairo => tests/binary-search.cairo} | 0 exercises/practice/clock/.meta/example.cairo | 3 --- exercises/practice/clock/src/lib.cairo | 3 --- .../{src/tests.cairo => tests/clock.cairo} | 0 .../practice/custom-set/.meta/example.cairo | 3 --- exercises/practice/custom-set/src/lib.cairo | 3 --- .../tests.cairo => tests/custom-set.cairo} | 1 - .../practice/dominoes/.meta/example.cairo | 3 --- .../{src/tests.cairo => tests/dominoes.cairo} | 0 .../practice/hello-world/.meta/example.cairo | 4 ---- exercises/practice/hello-world/src/lib.cairo | 3 --- .../tests.cairo => tests/hello-world.cairo} | 0 .../.meta/example.cairo | 3 --- .../largest-series-product/src/lib.cairo | 3 --- .../largest-series-product.cairo} | 0 exercises/practice/leap/.meta/example.cairo | 3 --- exercises/practice/leap/src/lib.cairo | 3 --- .../{src/tests.cairo => tests/leap.cairo} | 0 .../practice/linked-list/.meta/example.cairo | 3 --- exercises/practice/linked-list/src/lib.cairo | 3 --- .../tests.cairo => tests/linked-list.cairo} | 2 -- .../.meta/example.cairo | 3 --- .../lucians-luscious-lasagna/src/lib.cairo | 3 --- .../lucians-luscious-lasagna.cairo} | 0 .../protein-translation/.meta/example.cairo | 3 --- .../protein-translation/src/lib.cairo | 3 --- .../protein-translation.cairo} | 0 .../rational-numbers/.meta/example.cairo | 3 --- .../practice/rational-numbers/src/lib.cairo | 3 --- .../rational-numbers.cairo} | 0 .../robot-simulator/.meta/example.cairo | 3 --- .../practice/robot-simulator/src/lib.cairo | 3 --- .../robot-simulator.cairo} | 0 .../roman-numerals/.meta/example.cairo | 3 --- .../practice/roman-numerals/src/lib.cairo | 3 --- .../roman-numerals.cairo} | 0 .../scrabble-score/.meta/example.cairo | 3 --- .../practice/scrabble-score/src/lib.cairo | 3 --- .../scrabble-score.cairo} | 0 .../semi-structured-logs/.meta/example.cairo | 3 --- .../semi-structured-logs/src/lib.cairo | 3 --- .../semi-structured-logs.cairo} | 0 .../simple-linked-list/.meta/example.cairo | 3 --- .../practice/simple-linked-list/src/lib.cairo | 3 --- .../simple-linked-list.cairo} | 0 .../practice/sublist/.meta/example.cairo | 3 --- exercises/practice/sublist/src/lib.cairo | 3 --- .../{src/tests.cairo => tests/sublist.cairo} | 0 t.sh | 20 +++++++++---------- 65 files changed, 9 insertions(+), 146 deletions(-) rename exercises/concept/low-power-embedded-game/{src/tests.cairo => tests/low-power-embedded-game.cairo} (100%) rename exercises/practice/allergies/{src/tests.cairo => tests/allergies.cairo} (99%) rename exercises/practice/anagram/{src/tests.cairo => tests/anagram.cairo} (100%) rename exercises/practice/armstrong-numbers/{src/tests.cairo => tests/armstrong-numbers.cairo} (100%) rename exercises/practice/beer-song/{src/tests.cairo => tests/beer-song.cairo} (99%) rename exercises/practice/binary-search/{src/tests.cairo => tests/binary-search.cairo} (100%) rename exercises/practice/clock/{src/tests.cairo => tests/clock.cairo} (100%) rename exercises/practice/custom-set/{src/tests.cairo => tests/custom-set.cairo} (99%) rename exercises/practice/dominoes/{src/tests.cairo => tests/dominoes.cairo} (100%) rename exercises/practice/hello-world/{src/tests.cairo => tests/hello-world.cairo} (100%) rename exercises/practice/largest-series-product/{src/tests.cairo => tests/largest-series-product.cairo} (100%) rename exercises/practice/leap/{src/tests.cairo => tests/leap.cairo} (100%) rename exercises/practice/linked-list/{src/tests.cairo => tests/linked-list.cairo} (99%) rename exercises/practice/lucians-luscious-lasagna/{src/tests.cairo => tests/lucians-luscious-lasagna.cairo} (100%) rename exercises/practice/protein-translation/{src/tests.cairo => tests/protein-translation.cairo} (100%) rename exercises/practice/rational-numbers/{src/tests.cairo => tests/rational-numbers.cairo} (100%) rename exercises/practice/robot-simulator/{src/tests.cairo => tests/robot-simulator.cairo} (100%) rename exercises/practice/roman-numerals/{src/tests.cairo => tests/roman-numerals.cairo} (100%) rename exercises/practice/scrabble-score/{src/tests.cairo => tests/scrabble-score.cairo} (100%) rename exercises/practice/semi-structured-logs/{src/tests.cairo => tests/semi-structured-logs.cairo} (100%) rename exercises/practice/simple-linked-list/{src/tests.cairo => tests/simple-linked-list.cairo} (100%) rename exercises/practice/sublist/{src/tests.cairo => tests/sublist.cairo} (100%) diff --git a/exercises/concept/low-power-embedded-game/src/lib.cairo b/exercises/concept/low-power-embedded-game/src/lib.cairo index 15839896..a41bc628 100644 --- a/exercises/concept/low-power-embedded-game/src/lib.cairo +++ b/exercises/concept/low-power-embedded-game/src/lib.cairo @@ -20,6 +20,3 @@ impl PositionImpl of PositionTrait { panic!("implement `fn manhattan`") } } - -#[cfg(test)] -mod tests; diff --git a/exercises/concept/low-power-embedded-game/src/tests.cairo b/exercises/concept/low-power-embedded-game/tests/low-power-embedded-game.cairo similarity index 100% rename from exercises/concept/low-power-embedded-game/src/tests.cairo rename to exercises/concept/low-power-embedded-game/tests/low-power-embedded-game.cairo diff --git a/exercises/practice/allergies/.meta/example.cairo b/exercises/practice/allergies/.meta/example.cairo index 0cfee7f2..e58a64cd 100644 --- a/exercises/practice/allergies/.meta/example.cairo +++ b/exercises/practice/allergies/.meta/example.cairo @@ -73,6 +73,3 @@ fn pow(base: u32, mut power: u32) -> u32 { }; result.try_into().expect('too large to fit output type') } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/allergies/src/lib.cairo b/exercises/practice/allergies/src/lib.cairo index 872a3c0a..b54c841a 100644 --- a/exercises/practice/allergies/src/lib.cairo +++ b/exercises/practice/allergies/src/lib.cairo @@ -29,6 +29,3 @@ impl AllergiesImpl of AllergiesTrait { ) } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/allergies/src/tests.cairo b/exercises/practice/allergies/tests/allergies.cairo similarity index 99% rename from exercises/practice/allergies/src/tests.cairo rename to exercises/practice/allergies/tests/allergies.cairo index 5f1a56df..720d713b 100644 --- a/exercises/practice/allergies/src/tests.cairo +++ b/exercises/practice/allergies/tests/allergies.cairo @@ -304,7 +304,6 @@ fn compare_allergy_vectors(expected: @Array, actual: @Array) }; } - #[test] #[ignore] fn list_when_no_allergies() { diff --git a/exercises/practice/anagram/.meta/example.cairo b/exercises/practice/anagram/.meta/example.cairo index 099d554e..3ee889e7 100644 --- a/exercises/practice/anagram/.meta/example.cairo +++ b/exercises/practice/anagram/.meta/example.cairo @@ -127,6 +127,3 @@ fn lowercase(char: @u8) -> u8 { *char } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/anagram/src/lib.cairo b/exercises/practice/anagram/src/lib.cairo index 0a234355..f3e187a1 100644 --- a/exercises/practice/anagram/src/lib.cairo +++ b/exercises/practice/anagram/src/lib.cairo @@ -21,6 +21,3 @@ impl SetEq of PartialEq { fn anagrams_for(word: @ByteArray, inputs: @Set) -> Set { panic!() } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/anagram/src/tests.cairo b/exercises/practice/anagram/tests/anagram.cairo similarity index 100% rename from exercises/practice/anagram/src/tests.cairo rename to exercises/practice/anagram/tests/anagram.cairo diff --git a/exercises/practice/armstrong-numbers/.meta/example.cairo b/exercises/practice/armstrong-numbers/.meta/example.cairo index be2ffd32..9b6f4c63 100644 --- a/exercises/practice/armstrong-numbers/.meta/example.cairo +++ b/exercises/practice/armstrong-numbers/.meta/example.cairo @@ -37,6 +37,3 @@ fn pow(base: u128, mut power: u128) -> u128 { }; result.try_into().expect('too large to fit output type') } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/armstrong-numbers/src/lib.cairo b/exercises/practice/armstrong-numbers/src/lib.cairo index 563a2d32..c1d394b2 100644 --- a/exercises/practice/armstrong-numbers/src/lib.cairo +++ b/exercises/practice/armstrong-numbers/src/lib.cairo @@ -1,6 +1,3 @@ fn is_armstrong_number(num: u128) -> bool { panic!("true if {num} is an armstrong number") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/armstrong-numbers/src/tests.cairo b/exercises/practice/armstrong-numbers/tests/armstrong-numbers.cairo similarity index 100% rename from exercises/practice/armstrong-numbers/src/tests.cairo rename to exercises/practice/armstrong-numbers/tests/armstrong-numbers.cairo diff --git a/exercises/practice/beer-song/.meta/example.cairo b/exercises/practice/beer-song/.meta/example.cairo index fa99d9c9..f763e51a 100644 --- a/exercises/practice/beer-song/.meta/example.cairo +++ b/exercises/practice/beer-song/.meta/example.cairo @@ -10,7 +10,6 @@ fn verse(n: u32) -> ByteArray { } } - fn verses(start: u32, take_count: u32) -> ByteArray { assert!(0 <= start && start <= 99, "Start verse must be between 0 and 99"); assert!(0 <= take_count && take_count <= 99, "Count of bottles must be between 0 and 99"); @@ -35,7 +34,3 @@ fn verses(start: u32, take_count: u32) -> ByteArray { fn song() -> ByteArray { verses(99, 99) } - -#[cfg(test)] -mod tests; - diff --git a/exercises/practice/beer-song/src/lib.cairo b/exercises/practice/beer-song/src/lib.cairo index 8f16e960..15437bff 100644 --- a/exercises/practice/beer-song/src/lib.cairo +++ b/exercises/practice/beer-song/src/lib.cairo @@ -9,7 +9,3 @@ fn verses(start: u32, take_count: u32) -> ByteArray { fn song() -> ByteArray { panic!("sing the whole song") } - -#[cfg(test)] -mod tests; - diff --git a/exercises/practice/beer-song/src/tests.cairo b/exercises/practice/beer-song/tests/beer-song.cairo similarity index 99% rename from exercises/practice/beer-song/src/tests.cairo rename to exercises/practice/beer-song/tests/beer-song.cairo index f8dfcbca..fda435c9 100644 --- a/exercises/practice/beer-song/src/tests.cairo +++ b/exercises/practice/beer-song/tests/beer-song.cairo @@ -67,4 +67,3 @@ fn all_verses() { "99 bottles of beer on the wall, 99 bottles of beer.\nTake one down and pass it around, 98 bottles of beer on the wall.\n\n98 bottles of beer on the wall, 98 bottles of beer.\nTake one down and pass it around, 97 bottles of beer on the wall.\n\n97 bottles of beer on the wall, 97 bottles of beer.\nTake one down and pass it around, 96 bottles of beer on the wall.\n\n96 bottles of beer on the wall, 96 bottles of beer.\nTake one down and pass it around, 95 bottles of beer on the wall.\n\n95 bottles of beer on the wall, 95 bottles of beer.\nTake one down and pass it around, 94 bottles of beer on the wall.\n\n94 bottles of beer on the wall, 94 bottles of beer.\nTake one down and pass it around, 93 bottles of beer on the wall.\n\n93 bottles of beer on the wall, 93 bottles of beer.\nTake one down and pass it around, 92 bottles of beer on the wall.\n\n92 bottles of beer on the wall, 92 bottles of beer.\nTake one down and pass it around, 91 bottles of beer on the wall.\n\n91 bottles of beer on the wall, 91 bottles of beer.\nTake one down and pass it around, 90 bottles of beer on the wall.\n\n90 bottles of beer on the wall, 90 bottles of beer.\nTake one down and pass it around, 89 bottles of beer on the wall.\n\n89 bottles of beer on the wall, 89 bottles of beer.\nTake one down and pass it around, 88 bottles of beer on the wall.\n\n88 bottles of beer on the wall, 88 bottles of beer.\nTake one down and pass it around, 87 bottles of beer on the wall.\n\n87 bottles of beer on the wall, 87 bottles of beer.\nTake one down and pass it around, 86 bottles of beer on the wall.\n\n86 bottles of beer on the wall, 86 bottles of beer.\nTake one down and pass it around, 85 bottles of beer on the wall.\n\n85 bottles of beer on the wall, 85 bottles of beer.\nTake one down and pass it around, 84 bottles of beer on the wall.\n\n84 bottles of beer on the wall, 84 bottles of beer.\nTake one down and pass it around, 83 bottles of beer on the wall.\n\n83 bottles of beer on the wall, 83 bottles of beer.\nTake one down and pass it around, 82 bottles of beer on the wall.\n\n82 bottles of beer on the wall, 82 bottles of beer.\nTake one down and pass it around, 81 bottles of beer on the wall.\n\n81 bottles of beer on the wall, 81 bottles of beer.\nTake one down and pass it around, 80 bottles of beer on the wall.\n\n80 bottles of beer on the wall, 80 bottles of beer.\nTake one down and pass it around, 79 bottles of beer on the wall.\n\n79 bottles of beer on the wall, 79 bottles of beer.\nTake one down and pass it around, 78 bottles of beer on the wall.\n\n78 bottles of beer on the wall, 78 bottles of beer.\nTake one down and pass it around, 77 bottles of beer on the wall.\n\n77 bottles of beer on the wall, 77 bottles of beer.\nTake one down and pass it around, 76 bottles of beer on the wall.\n\n76 bottles of beer on the wall, 76 bottles of beer.\nTake one down and pass it around, 75 bottles of beer on the wall.\n\n75 bottles of beer on the wall, 75 bottles of beer.\nTake one down and pass it around, 74 bottles of beer on the wall.\n\n74 bottles of beer on the wall, 74 bottles of beer.\nTake one down and pass it around, 73 bottles of beer on the wall.\n\n73 bottles of beer on the wall, 73 bottles of beer.\nTake one down and pass it around, 72 bottles of beer on the wall.\n\n72 bottles of beer on the wall, 72 bottles of beer.\nTake one down and pass it around, 71 bottles of beer on the wall.\n\n71 bottles of beer on the wall, 71 bottles of beer.\nTake one down and pass it around, 70 bottles of beer on the wall.\n\n70 bottles of beer on the wall, 70 bottles of beer.\nTake one down and pass it around, 69 bottles of beer on the wall.\n\n69 bottles of beer on the wall, 69 bottles of beer.\nTake one down and pass it around, 68 bottles of beer on the wall.\n\n68 bottles of beer on the wall, 68 bottles of beer.\nTake one down and pass it around, 67 bottles of beer on the wall.\n\n67 bottles of beer on the wall, 67 bottles of beer.\nTake one down and pass it around, 66 bottles of beer on the wall.\n\n66 bottles of beer on the wall, 66 bottles of beer.\nTake one down and pass it around, 65 bottles of beer on the wall.\n\n65 bottles of beer on the wall, 65 bottles of beer.\nTake one down and pass it around, 64 bottles of beer on the wall.\n\n64 bottles of beer on the wall, 64 bottles of beer.\nTake one down and pass it around, 63 bottles of beer on the wall.\n\n63 bottles of beer on the wall, 63 bottles of beer.\nTake one down and pass it around, 62 bottles of beer on the wall.\n\n62 bottles of beer on the wall, 62 bottles of beer.\nTake one down and pass it around, 61 bottles of beer on the wall.\n\n61 bottles of beer on the wall, 61 bottles of beer.\nTake one down and pass it around, 60 bottles of beer on the wall.\n\n60 bottles of beer on the wall, 60 bottles of beer.\nTake one down and pass it around, 59 bottles of beer on the wall.\n\n59 bottles of beer on the wall, 59 bottles of beer.\nTake one down and pass it around, 58 bottles of beer on the wall.\n\n58 bottles of beer on the wall, 58 bottles of beer.\nTake one down and pass it around, 57 bottles of beer on the wall.\n\n57 bottles of beer on the wall, 57 bottles of beer.\nTake one down and pass it around, 56 bottles of beer on the wall.\n\n56 bottles of beer on the wall, 56 bottles of beer.\nTake one down and pass it around, 55 bottles of beer on the wall.\n\n55 bottles of beer on the wall, 55 bottles of beer.\nTake one down and pass it around, 54 bottles of beer on the wall.\n\n54 bottles of beer on the wall, 54 bottles of beer.\nTake one down and pass it around, 53 bottles of beer on the wall.\n\n53 bottles of beer on the wall, 53 bottles of beer.\nTake one down and pass it around, 52 bottles of beer on the wall.\n\n52 bottles of beer on the wall, 52 bottles of beer.\nTake one down and pass it around, 51 bottles of beer on the wall.\n\n51 bottles of beer on the wall, 51 bottles of beer.\nTake one down and pass it around, 50 bottles of beer on the wall.\n\n50 bottles of beer on the wall, 50 bottles of beer.\nTake one down and pass it around, 49 bottles of beer on the wall.\n\n49 bottles of beer on the wall, 49 bottles of beer.\nTake one down and pass it around, 48 bottles of beer on the wall.\n\n48 bottles of beer on the wall, 48 bottles of beer.\nTake one down and pass it around, 47 bottles of beer on the wall.\n\n47 bottles of beer on the wall, 47 bottles of beer.\nTake one down and pass it around, 46 bottles of beer on the wall.\n\n46 bottles of beer on the wall, 46 bottles of beer.\nTake one down and pass it around, 45 bottles of beer on the wall.\n\n45 bottles of beer on the wall, 45 bottles of beer.\nTake one down and pass it around, 44 bottles of beer on the wall.\n\n44 bottles of beer on the wall, 44 bottles of beer.\nTake one down and pass it around, 43 bottles of beer on the wall.\n\n43 bottles of beer on the wall, 43 bottles of beer.\nTake one down and pass it around, 42 bottles of beer on the wall.\n\n42 bottles of beer on the wall, 42 bottles of beer.\nTake one down and pass it around, 41 bottles of beer on the wall.\n\n41 bottles of beer on the wall, 41 bottles of beer.\nTake one down and pass it around, 40 bottles of beer on the wall.\n\n40 bottles of beer on the wall, 40 bottles of beer.\nTake one down and pass it around, 39 bottles of beer on the wall.\n\n39 bottles of beer on the wall, 39 bottles of beer.\nTake one down and pass it around, 38 bottles of beer on the wall.\n\n38 bottles of beer on the wall, 38 bottles of beer.\nTake one down and pass it around, 37 bottles of beer on the wall.\n\n37 bottles of beer on the wall, 37 bottles of beer.\nTake one down and pass it around, 36 bottles of beer on the wall.\n\n36 bottles of beer on the wall, 36 bottles of beer.\nTake one down and pass it around, 35 bottles of beer on the wall.\n\n35 bottles of beer on the wall, 35 bottles of beer.\nTake one down and pass it around, 34 bottles of beer on the wall.\n\n34 bottles of beer on the wall, 34 bottles of beer.\nTake one down and pass it around, 33 bottles of beer on the wall.\n\n33 bottles of beer on the wall, 33 bottles of beer.\nTake one down and pass it around, 32 bottles of beer on the wall.\n\n32 bottles of beer on the wall, 32 bottles of beer.\nTake one down and pass it around, 31 bottles of beer on the wall.\n\n31 bottles of beer on the wall, 31 bottles of beer.\nTake one down and pass it around, 30 bottles of beer on the wall.\n\n30 bottles of beer on the wall, 30 bottles of beer.\nTake one down and pass it around, 29 bottles of beer on the wall.\n\n29 bottles of beer on the wall, 29 bottles of beer.\nTake one down and pass it around, 28 bottles of beer on the wall.\n\n28 bottles of beer on the wall, 28 bottles of beer.\nTake one down and pass it around, 27 bottles of beer on the wall.\n\n27 bottles of beer on the wall, 27 bottles of beer.\nTake one down and pass it around, 26 bottles of beer on the wall.\n\n26 bottles of beer on the wall, 26 bottles of beer.\nTake one down and pass it around, 25 bottles of beer on the wall.\n\n25 bottles of beer on the wall, 25 bottles of beer.\nTake one down and pass it around, 24 bottles of beer on the wall.\n\n24 bottles of beer on the wall, 24 bottles of beer.\nTake one down and pass it around, 23 bottles of beer on the wall.\n\n23 bottles of beer on the wall, 23 bottles of beer.\nTake one down and pass it around, 22 bottles of beer on the wall.\n\n22 bottles of beer on the wall, 22 bottles of beer.\nTake one down and pass it around, 21 bottles of beer on the wall.\n\n21 bottles of beer on the wall, 21 bottles of beer.\nTake one down and pass it around, 20 bottles of beer on the wall.\n\n20 bottles of beer on the wall, 20 bottles of beer.\nTake one down and pass it around, 19 bottles of beer on the wall.\n\n19 bottles of beer on the wall, 19 bottles of beer.\nTake one down and pass it around, 18 bottles of beer on the wall.\n\n18 bottles of beer on the wall, 18 bottles of beer.\nTake one down and pass it around, 17 bottles of beer on the wall.\n\n17 bottles of beer on the wall, 17 bottles of beer.\nTake one down and pass it around, 16 bottles of beer on the wall.\n\n16 bottles of beer on the wall, 16 bottles of beer.\nTake one down and pass it around, 15 bottles of beer on the wall.\n\n15 bottles of beer on the wall, 15 bottles of beer.\nTake one down and pass it around, 14 bottles of beer on the wall.\n\n14 bottles of beer on the wall, 14 bottles of beer.\nTake one down and pass it around, 13 bottles of beer on the wall.\n\n13 bottles of beer on the wall, 13 bottles of beer.\nTake one down and pass it around, 12 bottles of beer on the wall.\n\n12 bottles of beer on the wall, 12 bottles of beer.\nTake one down and pass it around, 11 bottles of beer on the wall.\n\n11 bottles of beer on the wall, 11 bottles of beer.\nTake one down and pass it around, 10 bottles of beer on the wall.\n\n10 bottles of beer on the wall, 10 bottles of beer.\nTake one down and pass it around, 9 bottles of beer on the wall.\n\n9 bottles of beer on the wall, 9 bottles of beer.\nTake one down and pass it around, 8 bottles of beer on the wall.\n\n8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n\n7 bottles of beer on the wall, 7 bottles of beer.\nTake one down and pass it around, 6 bottles of beer on the wall.\n\n6 bottles of beer on the wall, 6 bottles of beer.\nTake one down and pass it around, 5 bottles of beer on the wall.\n\n5 bottles of beer on the wall, 5 bottles of beer.\nTake one down and pass it around, 4 bottles of beer on the wall.\n\n4 bottles of beer on the wall, 4 bottles of beer.\nTake one down and pass it around, 3 bottles of beer on the wall.\n\n3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n\n2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n"; assert_eq!(beer_song::song(), expected); } - diff --git a/exercises/practice/binary-search/.meta/example.cairo b/exercises/practice/binary-search/.meta/example.cairo index 50854f37..9ace93b2 100644 --- a/exercises/practice/binary-search/.meta/example.cairo +++ b/exercises/practice/binary-search/.meta/example.cairo @@ -19,6 +19,3 @@ fn find, +Copy, +PartialOrd>(search_array: @Array, value: T } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/binary-search/src/lib.cairo b/exercises/practice/binary-search/src/lib.cairo index ebd15eea..15796546 100644 --- a/exercises/practice/binary-search/src/lib.cairo +++ b/exercises/practice/binary-search/src/lib.cairo @@ -3,6 +3,3 @@ fn find(search_array: @Array, value: usize) -> Option { "Using the binary search algorithm, find the element '{value}' in the array '{search_array:?}' and return its index." ) } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/binary-search/src/tests.cairo b/exercises/practice/binary-search/tests/binary-search.cairo similarity index 100% rename from exercises/practice/binary-search/src/tests.cairo rename to exercises/practice/binary-search/tests/binary-search.cairo diff --git a/exercises/practice/clock/.meta/example.cairo b/exercises/practice/clock/.meta/example.cairo index f7d00500..e8c02d8a 100644 --- a/exercises/practice/clock/.meta/example.cairo +++ b/exercises/practice/clock/.meta/example.cairo @@ -46,6 +46,3 @@ impl ClockImpl of ClockTrait { formatter.buffer } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/clock/src/lib.cairo b/exercises/practice/clock/src/lib.cairo index ea95d4ed..56934f41 100644 --- a/exercises/practice/clock/src/lib.cairo +++ b/exercises/practice/clock/src/lib.cairo @@ -15,6 +15,3 @@ impl ClockImpl of ClockTrait { panic!("implement `to_string`") } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/clock/src/tests.cairo b/exercises/practice/clock/tests/clock.cairo similarity index 100% rename from exercises/practice/clock/src/tests.cairo rename to exercises/practice/clock/tests/clock.cairo diff --git a/exercises/practice/custom-set/.meta/example.cairo b/exercises/practice/custom-set/.meta/example.cairo index 4f94fd0f..f7eb5e62 100644 --- a/exercises/practice/custom-set/.meta/example.cairo +++ b/exercises/practice/custom-set/.meta/example.cairo @@ -158,6 +158,3 @@ impl CustomSetImpl< } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/custom-set/src/lib.cairo b/exercises/practice/custom-set/src/lib.cairo index c2d66718..9214b4bd 100644 --- a/exercises/practice/custom-set/src/lib.cairo +++ b/exercises/practice/custom-set/src/lib.cairo @@ -56,6 +56,3 @@ impl CustomSetImpl< panic!() } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/custom-set/src/tests.cairo b/exercises/practice/custom-set/tests/custom-set.cairo similarity index 99% rename from exercises/practice/custom-set/src/tests.cairo rename to exercises/practice/custom-set/tests/custom-set.cairo index 3bcc4af5..a8ed7dd3 100644 --- a/exercises/practice/custom-set/src/tests.cairo +++ b/exercises/practice/custom-set/tests/custom-set.cairo @@ -341,4 +341,3 @@ fn union_of_non_empty_sets_contains_all_unique_elements() { let expected = U32Set::new(@array![3, 2, 1]); assert_eq!(set_1.union(@set_2), expected); } - diff --git a/exercises/practice/dominoes/.meta/example.cairo b/exercises/practice/dominoes/.meta/example.cairo index c39af39a..1086d4b4 100644 --- a/exercises/practice/dominoes/.meta/example.cairo +++ b/exercises/practice/dominoes/.meta/example.cairo @@ -138,6 +138,3 @@ fn chain_worker(dominoes: @Array) -> Array { }; chain } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/dominoes/src/tests.cairo b/exercises/practice/dominoes/tests/dominoes.cairo similarity index 100% rename from exercises/practice/dominoes/src/tests.cairo rename to exercises/practice/dominoes/tests/dominoes.cairo diff --git a/exercises/practice/hello-world/.meta/example.cairo b/exercises/practice/hello-world/.meta/example.cairo index 1effe264..fe31a177 100644 --- a/exercises/practice/hello-world/.meta/example.cairo +++ b/exercises/practice/hello-world/.meta/example.cairo @@ -1,7 +1,3 @@ fn hello() -> felt252 { 'Hello, World!' } - -#[cfg(test)] -mod tests; - diff --git a/exercises/practice/hello-world/src/lib.cairo b/exercises/practice/hello-world/src/lib.cairo index 73ff1bb5..8b9e3307 100644 --- a/exercises/practice/hello-world/src/lib.cairo +++ b/exercises/practice/hello-world/src/lib.cairo @@ -2,6 +2,3 @@ fn hello() -> felt252 { 'Goodbye, Mars!' } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/hello-world/src/tests.cairo b/exercises/practice/hello-world/tests/hello-world.cairo similarity index 100% rename from exercises/practice/hello-world/src/tests.cairo rename to exercises/practice/hello-world/tests/hello-world.cairo diff --git a/exercises/practice/largest-series-product/.meta/example.cairo b/exercises/practice/largest-series-product/.meta/example.cairo index 2488d485..a8da9786 100644 --- a/exercises/practice/largest-series-product/.meta/example.cairo +++ b/exercises/practice/largest-series-product/.meta/example.cairo @@ -108,6 +108,3 @@ impl ByteArrayCharToU64 of ByteArrayCharToU64Trait { } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/largest-series-product/src/lib.cairo b/exercises/practice/largest-series-product/src/lib.cairo index 22be6251..b1c11721 100644 --- a/exercises/practice/largest-series-product/src/lib.cairo +++ b/exercises/practice/largest-series-product/src/lib.cairo @@ -8,6 +8,3 @@ enum Error { fn lsp(input: @ByteArray, span: i32) -> Result { panic!("implement the 'lsp' function") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/largest-series-product/src/tests.cairo b/exercises/practice/largest-series-product/tests/largest-series-product.cairo similarity index 100% rename from exercises/practice/largest-series-product/src/tests.cairo rename to exercises/practice/largest-series-product/tests/largest-series-product.cairo diff --git a/exercises/practice/leap/.meta/example.cairo b/exercises/practice/leap/.meta/example.cairo index f059f75f..01d1c254 100644 --- a/exercises/practice/leap/.meta/example.cairo +++ b/exercises/practice/leap/.meta/example.cairo @@ -1,6 +1,3 @@ fn is_leap_year(year: u64) -> bool { year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/leap/src/lib.cairo b/exercises/practice/leap/src/lib.cairo index e9e68239..f3b56666 100644 --- a/exercises/practice/leap/src/lib.cairo +++ b/exercises/practice/leap/src/lib.cairo @@ -1,6 +1,3 @@ fn is_leap_year(year: u64) -> bool { panic!("true if {year} is a leap year") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/leap/src/tests.cairo b/exercises/practice/leap/tests/leap.cairo similarity index 100% rename from exercises/practice/leap/src/tests.cairo rename to exercises/practice/leap/tests/leap.cairo diff --git a/exercises/practice/linked-list/.meta/example.cairo b/exercises/practice/linked-list/.meta/example.cairo index 06b5a08b..a6710b24 100644 --- a/exercises/practice/linked-list/.meta/example.cairo +++ b/exercises/practice/linked-list/.meta/example.cairo @@ -180,6 +180,3 @@ impl NodeImpl of NodeTrait { Node { data, previous, next } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/linked-list/src/lib.cairo b/exercises/practice/linked-list/src/lib.cairo index 7496efb3..293066bd 100644 --- a/exercises/practice/linked-list/src/lib.cairo +++ b/exercises/practice/linked-list/src/lib.cairo @@ -31,6 +31,3 @@ impl DoublyLinkedListImpl> of DoublyLinkedListTrait { panic!("implement 'delete'") } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/linked-list/src/tests.cairo b/exercises/practice/linked-list/tests/linked-list.cairo similarity index 99% rename from exercises/practice/linked-list/src/tests.cairo rename to exercises/practice/linked-list/tests/linked-list.cairo index 602f997a..9d525f67 100644 --- a/exercises/practice/linked-list/src/tests.cairo +++ b/exercises/practice/linked-list/tests/linked-list.cairo @@ -235,7 +235,6 @@ fn using_delete_does_nothing_if_the_list_is_empty() { assert_eq!(list.len(), 0); } - fn test_using_shift_raises_an_error_if_the_list_is_empty() { let mut list = DoublyLinkedList::::new(); let none: Option = Option::None; @@ -251,4 +250,3 @@ fn can_return_with_shift_and_return_option_none_if_empty() { let none: Option = Option::None; assert_eq!(list.shift(), none); } - diff --git a/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo b/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo index 2bf52b00..8485a865 100644 --- a/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo +++ b/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo @@ -13,6 +13,3 @@ fn preparation_time_in_minutes(number_of_layers: u32) -> u32 { fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) -> u32 { preparation_time_in_minutes(number_of_layers) + actual_minutes_in_oven } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/lucians-luscious-lasagna/src/lib.cairo b/exercises/practice/lucians-luscious-lasagna/src/lib.cairo index 70a85c97..51308e4f 100644 --- a/exercises/practice/lucians-luscious-lasagna/src/lib.cairo +++ b/exercises/practice/lucians-luscious-lasagna/src/lib.cairo @@ -17,6 +17,3 @@ fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) - "calculate elapsed time in minutes for number of layers {number_of_layers} and actual minutes in oven {actual_minutes_in_oven}" ) } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/lucians-luscious-lasagna/src/tests.cairo b/exercises/practice/lucians-luscious-lasagna/tests/lucians-luscious-lasagna.cairo similarity index 100% rename from exercises/practice/lucians-luscious-lasagna/src/tests.cairo rename to exercises/practice/lucians-luscious-lasagna/tests/lucians-luscious-lasagna.cairo diff --git a/exercises/practice/protein-translation/.meta/example.cairo b/exercises/practice/protein-translation/.meta/example.cairo index 6597cbf3..490fc231 100644 --- a/exercises/practice/protein-translation/.meta/example.cairo +++ b/exercises/practice/protein-translation/.meta/example.cairo @@ -106,6 +106,3 @@ impl CodonChunk of CodonChunkTrait { } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/protein-translation/src/lib.cairo b/exercises/practice/protein-translation/src/lib.cairo index 414e9def..8bc51034 100644 --- a/exercises/practice/protein-translation/src/lib.cairo +++ b/exercises/practice/protein-translation/src/lib.cairo @@ -59,6 +59,3 @@ impl CodonChunk of CodonChunkTrait { } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/protein-translation/src/tests.cairo b/exercises/practice/protein-translation/tests/protein-translation.cairo similarity index 100% rename from exercises/practice/protein-translation/src/tests.cairo rename to exercises/practice/protein-translation/tests/protein-translation.cairo diff --git a/exercises/practice/rational-numbers/.meta/example.cairo b/exercises/practice/rational-numbers/.meta/example.cairo index 0ef2470f..f1cd83f3 100644 --- a/exercises/practice/rational-numbers/.meta/example.cairo +++ b/exercises/practice/rational-numbers/.meta/example.cairo @@ -182,6 +182,3 @@ impl I128Debug of Debug { Result::Ok(()) } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/rational-numbers/src/lib.cairo b/exercises/practice/rational-numbers/src/lib.cairo index f0b2b021..e3a75c8f 100644 --- a/exercises/practice/rational-numbers/src/lib.cairo +++ b/exercises/practice/rational-numbers/src/lib.cairo @@ -85,6 +85,3 @@ impl I128Debug of Debug { Result::Ok(()) } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/rational-numbers/src/tests.cairo b/exercises/practice/rational-numbers/tests/rational-numbers.cairo similarity index 100% rename from exercises/practice/rational-numbers/src/tests.cairo rename to exercises/practice/rational-numbers/tests/rational-numbers.cairo diff --git a/exercises/practice/robot-simulator/.meta/example.cairo b/exercises/practice/robot-simulator/.meta/example.cairo index 1c42bf7a..53167c68 100644 --- a/exercises/practice/robot-simulator/.meta/example.cairo +++ b/exercises/practice/robot-simulator/.meta/example.cairo @@ -116,6 +116,3 @@ impl RobotImpl of RobotTrait { } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/robot-simulator/src/lib.cairo b/exercises/practice/robot-simulator/src/lib.cairo index b44f3e12..a2472ffa 100644 --- a/exercises/practice/robot-simulator/src/lib.cairo +++ b/exercises/practice/robot-simulator/src/lib.cairo @@ -46,6 +46,3 @@ impl RobotImpl of RobotTrait { panic!() } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/robot-simulator/src/tests.cairo b/exercises/practice/robot-simulator/tests/robot-simulator.cairo similarity index 100% rename from exercises/practice/robot-simulator/src/tests.cairo rename to exercises/practice/robot-simulator/tests/robot-simulator.cairo diff --git a/exercises/practice/roman-numerals/.meta/example.cairo b/exercises/practice/roman-numerals/.meta/example.cairo index 0b9d53a4..bd9bcd1f 100644 --- a/exercises/practice/roman-numerals/.meta/example.cairo +++ b/exercises/practice/roman-numerals/.meta/example.cairo @@ -45,6 +45,3 @@ impl RomanDisplay of Display { write!(f, "{}", self.value) } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/roman-numerals/src/lib.cairo b/exercises/practice/roman-numerals/src/lib.cairo index 6f23c6b7..06a42218 100644 --- a/exercises/practice/roman-numerals/src/lib.cairo +++ b/exercises/practice/roman-numerals/src/lib.cairo @@ -15,6 +15,3 @@ impl RomanDisplay of Display { panic!() } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/roman-numerals/src/tests.cairo b/exercises/practice/roman-numerals/tests/roman-numerals.cairo similarity index 100% rename from exercises/practice/roman-numerals/src/tests.cairo rename to exercises/practice/roman-numerals/tests/roman-numerals.cairo diff --git a/exercises/practice/scrabble-score/.meta/example.cairo b/exercises/practice/scrabble-score/.meta/example.cairo index ab37bb12..0c19f7f4 100644 --- a/exercises/practice/scrabble-score/.meta/example.cairo +++ b/exercises/practice/scrabble-score/.meta/example.cairo @@ -48,6 +48,3 @@ fn lowercase(char: u8) -> u8 { char } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/scrabble-score/src/lib.cairo b/exercises/practice/scrabble-score/src/lib.cairo index 62d2c92d..e42554cd 100644 --- a/exercises/practice/scrabble-score/src/lib.cairo +++ b/exercises/practice/scrabble-score/src/lib.cairo @@ -1,6 +1,3 @@ fn score(word: ByteArray) -> u16 { panic!("Score {word} in Scrabble.") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/scrabble-score/src/tests.cairo b/exercises/practice/scrabble-score/tests/scrabble-score.cairo similarity index 100% rename from exercises/practice/scrabble-score/src/tests.cairo rename to exercises/practice/scrabble-score/tests/scrabble-score.cairo diff --git a/exercises/practice/semi-structured-logs/.meta/example.cairo b/exercises/practice/semi-structured-logs/.meta/example.cairo index 8b1f7a7c..50de8f58 100644 --- a/exercises/practice/semi-structured-logs/.meta/example.cairo +++ b/exercises/practice/semi-structured-logs/.meta/example.cairo @@ -26,6 +26,3 @@ fn warn(message: ByteArray) -> ByteArray { fn error(message: ByteArray) -> ByteArray { format!("[ERROR]: {message}") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/semi-structured-logs/src/lib.cairo b/exercises/practice/semi-structured-logs/src/lib.cairo index 036865e6..0d3c550b 100644 --- a/exercises/practice/semi-structured-logs/src/lib.cairo +++ b/exercises/practice/semi-structured-logs/src/lib.cairo @@ -23,6 +23,3 @@ fn warn(message: ByteArray) -> ByteArray { fn error(message: ByteArray) -> ByteArray { panic!("return a message for error log level") } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/semi-structured-logs/src/tests.cairo b/exercises/practice/semi-structured-logs/tests/semi-structured-logs.cairo similarity index 100% rename from exercises/practice/semi-structured-logs/src/tests.cairo rename to exercises/practice/semi-structured-logs/tests/semi-structured-logs.cairo diff --git a/exercises/practice/simple-linked-list/.meta/example.cairo b/exercises/practice/simple-linked-list/.meta/example.cairo index 62f025de..c3e14ada 100644 --- a/exercises/practice/simple-linked-list/.meta/example.cairo +++ b/exercises/practice/simple-linked-list/.meta/example.cairo @@ -92,6 +92,3 @@ impl NodeImpl of NodeTrait { Node { data: element, next, } } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/simple-linked-list/src/lib.cairo b/exercises/practice/simple-linked-list/src/lib.cairo index 1db9b775..ad63e3fd 100644 --- a/exercises/practice/simple-linked-list/src/lib.cairo +++ b/exercises/practice/simple-linked-list/src/lib.cairo @@ -46,6 +46,3 @@ impl SimpleLinkedListIntoArray, +Copy> of Into>(a: Span, b: Span) -> bool { i += 1; } } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/sublist/src/lib.cairo b/exercises/practice/sublist/src/lib.cairo index 5bc251cc..eda73d49 100644 --- a/exercises/practice/sublist/src/lib.cairo +++ b/exercises/practice/sublist/src/lib.cairo @@ -9,6 +9,3 @@ enum Comparison { fn sublist>(a: @Array, b: @Array) -> Comparison { panic!() } - -#[cfg(test)] -mod tests; diff --git a/exercises/practice/sublist/src/tests.cairo b/exercises/practice/sublist/tests/sublist.cairo similarity index 100% rename from exercises/practice/sublist/src/tests.cairo rename to exercises/practice/sublist/tests/sublist.cairo diff --git a/t.sh b/t.sh index a2132dc5..53fba71c 100755 --- a/t.sh +++ b/t.sh @@ -1,11 +1,9 @@ -# dir="./exercises/*/*" -# for exercise_dir in $dir; do -# echo "updating $exercise_dir" -# slug=$(basename $exercise_dir) -# mkdir "$exercise_dir/tests" -# mv "$exercise_dir/src/tests.cairo" "$exercise_dir/tests/$slug.cairo" - -# done - -dir="./exercises/practice/allergies" -sed -n -e '/\#\[cfg\(test\)\]/,$d' "$dir/src/lib.cairo" +dir="./exercises/*/*" +for exercise_dir in $dir; do + echo "updating $exercise_dir" + slug=$(basename $exercise_dir) + mkdir -p "$exercise_dir/tests" + mv "$exercise_dir/src/tests.cairo" "$exercise_dir/tests/$slug.cairo" + sed -i '/#\[cfg(test)\]/,$d' "$exercise_dir/src/lib.cairo" + sed -i '/#\[cfg(test)\]/,$d' "$exercise_dir/.meta/example.cairo" +done From e667d89105156e878ce68dafde5deb3115edb43a Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:25:14 +0200 Subject: [PATCH 03/15] Fix all test name templates in exercises --- exercises/concept/low-power-embedded-game/.meta/config.json | 2 +- exercises/practice/allergies/.meta/config.json | 2 +- exercises/practice/anagram/.meta/config.json | 2 +- exercises/practice/armstrong-numbers/.meta/config.json | 2 +- exercises/practice/beer-song/.meta/config.json | 2 +- exercises/practice/binary-search/.meta/config.json | 2 +- exercises/practice/clock/.meta/config.json | 2 +- exercises/practice/custom-set/.meta/config.json | 2 +- exercises/practice/dominoes/.meta/config.json | 2 +- exercises/practice/hello-world/.meta/config.json | 2 +- exercises/practice/largest-series-product/.meta/config.json | 2 +- exercises/practice/leap/.meta/config.json | 2 +- exercises/practice/linked-list/.meta/config.json | 2 +- .../practice/lucians-luscious-lasagna/.meta/config.json | 2 +- exercises/practice/protein-translation/.meta/config.json | 2 +- exercises/practice/rational-numbers/.meta/config.json | 2 +- exercises/practice/robot-simulator/.meta/config.json | 2 +- exercises/practice/roman-numerals/.meta/config.json | 2 +- exercises/practice/scrabble-score/.meta/config.json | 2 +- exercises/practice/semi-structured-logs/.meta/config.json | 2 +- exercises/practice/simple-linked-list/.meta/config.json | 2 +- exercises/practice/sublist/.meta/config.json | 2 +- t.sh | 5 +---- 23 files changed, 23 insertions(+), 26 deletions(-) diff --git a/exercises/concept/low-power-embedded-game/.meta/config.json b/exercises/concept/low-power-embedded-game/.meta/config.json index eaedc766..3fdfdd35 100644 --- a/exercises/concept/low-power-embedded-game/.meta/config.json +++ b/exercises/concept/low-power-embedded-game/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/low-power-embedded-game.cairo" ], "exemplar": [ ".meta/exemplar.cairo" diff --git a/exercises/practice/allergies/.meta/config.json b/exercises/practice/allergies/.meta/config.json index e7da802a..1388c5b4 100644 --- a/exercises/practice/allergies/.meta/config.json +++ b/exercises/practice/allergies/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/allergies.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/anagram/.meta/config.json b/exercises/practice/anagram/.meta/config.json index c4ceb651..5a3b33d2 100644 --- a/exercises/practice/anagram/.meta/config.json +++ b/exercises/practice/anagram/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/anagram.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/armstrong-numbers/.meta/config.json b/exercises/practice/armstrong-numbers/.meta/config.json index 8d4e6792..f95797ee 100644 --- a/exercises/practice/armstrong-numbers/.meta/config.json +++ b/exercises/practice/armstrong-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/armstrong-numbers.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/beer-song/.meta/config.json b/exercises/practice/beer-song/.meta/config.json index 2e818654..5fef4729 100644 --- a/exercises/practice/beer-song/.meta/config.json +++ b/exercises/practice/beer-song/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/beer-song.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/binary-search/.meta/config.json b/exercises/practice/binary-search/.meta/config.json index 61f6291b..f35c1d18 100644 --- a/exercises/practice/binary-search/.meta/config.json +++ b/exercises/practice/binary-search/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/binary-search.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/clock/.meta/config.json b/exercises/practice/clock/.meta/config.json index 7883292a..f7a0c8e9 100644 --- a/exercises/practice/clock/.meta/config.json +++ b/exercises/practice/clock/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/clock.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/custom-set/.meta/config.json b/exercises/practice/custom-set/.meta/config.json index 53f31826..d3efb500 100644 --- a/exercises/practice/custom-set/.meta/config.json +++ b/exercises/practice/custom-set/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/custom-set.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/dominoes/.meta/config.json b/exercises/practice/dominoes/.meta/config.json index b909ec04..659f928e 100644 --- a/exercises/practice/dominoes/.meta/config.json +++ b/exercises/practice/dominoes/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/dominoes.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/hello-world/.meta/config.json b/exercises/practice/hello-world/.meta/config.json index 44d86c3a..ea0a3f2e 100644 --- a/exercises/practice/hello-world/.meta/config.json +++ b/exercises/practice/hello-world/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/hello-world.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/largest-series-product/.meta/config.json b/exercises/practice/largest-series-product/.meta/config.json index 1c7ef76e..3d3162f3 100644 --- a/exercises/practice/largest-series-product/.meta/config.json +++ b/exercises/practice/largest-series-product/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/largest-series-product.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/leap/.meta/config.json b/exercises/practice/leap/.meta/config.json index 958e3efa..f8e3ca4d 100644 --- a/exercises/practice/leap/.meta/config.json +++ b/exercises/practice/leap/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/leap.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/linked-list/.meta/config.json b/exercises/practice/linked-list/.meta/config.json index cd80b9dc..461eb065 100644 --- a/exercises/practice/linked-list/.meta/config.json +++ b/exercises/practice/linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/linked-list.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/lucians-luscious-lasagna/.meta/config.json b/exercises/practice/lucians-luscious-lasagna/.meta/config.json index 3862d0d3..28a53811 100644 --- a/exercises/practice/lucians-luscious-lasagna/.meta/config.json +++ b/exercises/practice/lucians-luscious-lasagna/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/lucians-luscious-lasagna.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/protein-translation/.meta/config.json b/exercises/practice/protein-translation/.meta/config.json index 4739995b..f4e4c721 100644 --- a/exercises/practice/protein-translation/.meta/config.json +++ b/exercises/practice/protein-translation/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/protein-translation.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/rational-numbers/.meta/config.json b/exercises/practice/rational-numbers/.meta/config.json index 6a54cf19..99f837cc 100644 --- a/exercises/practice/rational-numbers/.meta/config.json +++ b/exercises/practice/rational-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/rational-numbers.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/robot-simulator/.meta/config.json b/exercises/practice/robot-simulator/.meta/config.json index 6afe40fb..93a5674b 100644 --- a/exercises/practice/robot-simulator/.meta/config.json +++ b/exercises/practice/robot-simulator/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/robot-simulator.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/roman-numerals/.meta/config.json b/exercises/practice/roman-numerals/.meta/config.json index 06346f16..943f3305 100644 --- a/exercises/practice/roman-numerals/.meta/config.json +++ b/exercises/practice/roman-numerals/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/roman-numerals.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/scrabble-score/.meta/config.json b/exercises/practice/scrabble-score/.meta/config.json index 8b3956c9..e4ceedd6 100644 --- a/exercises/practice/scrabble-score/.meta/config.json +++ b/exercises/practice/scrabble-score/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/scrabble-score.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/semi-structured-logs/.meta/config.json b/exercises/practice/semi-structured-logs/.meta/config.json index 4c3724bf..fd5ca7f3 100644 --- a/exercises/practice/semi-structured-logs/.meta/config.json +++ b/exercises/practice/semi-structured-logs/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/semi-structured-logs.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/simple-linked-list/.meta/config.json b/exercises/practice/simple-linked-list/.meta/config.json index 143541f2..489e1352 100644 --- a/exercises/practice/simple-linked-list/.meta/config.json +++ b/exercises/practice/simple-linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/simple-linked-list.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/sublist/.meta/config.json b/exercises/practice/sublist/.meta/config.json index 334f7e0e..c82aa4bc 100644 --- a/exercises/practice/sublist/.meta/config.json +++ b/exercises/practice/sublist/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/sublist.cairo" ], "example": [ ".meta/example.cairo" diff --git a/t.sh b/t.sh index 53fba71c..f88e8084 100755 --- a/t.sh +++ b/t.sh @@ -2,8 +2,5 @@ dir="./exercises/*/*" for exercise_dir in $dir; do echo "updating $exercise_dir" slug=$(basename $exercise_dir) - mkdir -p "$exercise_dir/tests" - mv "$exercise_dir/src/tests.cairo" "$exercise_dir/tests/$slug.cairo" - sed -i '/#\[cfg(test)\]/,$d' "$exercise_dir/src/lib.cairo" - sed -i '/#\[cfg(test)\]/,$d' "$exercise_dir/.meta/example.cairo" + sed -i "s/%{kebab_slug}/$slug/g" "$exercise_dir/.meta/config.json" done From 6c83a8506faef55715833d4c6fb1d8d887d9ffc5 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:25:54 +0200 Subject: [PATCH 04/15] Remote test.sh and t.sh --- t.sh | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 t.sh diff --git a/t.sh b/t.sh deleted file mode 100755 index f88e8084..00000000 --- a/t.sh +++ /dev/null @@ -1,6 +0,0 @@ -dir="./exercises/*/*" -for exercise_dir in $dir; do - echo "updating $exercise_dir" - slug=$(basename $exercise_dir) - sed -i "s/%{kebab_slug}/$slug/g" "$exercise_dir/.meta/config.json" -done From ce984b708e6461de11186bb35a6c157720c9bd82 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:29:31 +0200 Subject: [PATCH 05/15] update TESTS.md related to running ignored tests --- docs/TESTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TESTS.md b/docs/TESTS.md index 3b27489c..6424b95e 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -25,7 +25,7 @@ $ scarb cairo-test Only the first test is enabled by default. After you are ready to pass the next test, remove the ignore flag from the next test (`#[ignore]`). -You can also remove the flag from all the tests at once if you prefer. +You can also remove the flag from all the tests at once if you prefer or run the above command with the appropriate flag `scarb cairo-test --include-ignored`. Feel free to write as little code as possible to get the tests to pass. The test failures will guide you to what should be written next. From 04567ce3ab68cdef2b55ffddf1d4f1a2dbfe7102 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 12:55:05 +0200 Subject: [PATCH 06/15] Update entities to test to be pub --- bin/verify-exercises | 2 +- config.json | 2 +- exercises/practice/allergies/.meta/example.cairo | 5 ++--- exercises/practice/allergies/src/lib.cairo | 4 ++-- exercises/practice/anagram/.meta/example.cairo | 4 ++-- exercises/practice/anagram/src/lib.cairo | 4 ++-- .../practice/armstrong-numbers/.meta/example.cairo | 2 +- exercises/practice/armstrong-numbers/src/lib.cairo | 2 +- exercises/practice/beer-song/.meta/example.cairo | 6 +++--- exercises/practice/beer-song/src/lib.cairo | 6 +++--- exercises/practice/binary-search/.meta/example.cairo | 4 +++- exercises/practice/binary-search/src/lib.cairo | 2 +- exercises/practice/clock/.meta/example.cairo | 2 +- exercises/practice/clock/src/lib.cairo | 2 +- exercises/practice/clock/tests/clock.cairo | 2 +- exercises/practice/custom-set/.meta/example.cairo | 2 +- exercises/practice/custom-set/src/lib.cairo | 2 +- exercises/practice/dominoes/.meta/example.cairo | 4 ++-- exercises/practice/dominoes/src/lib.cairo | 4 +++- exercises/practice/dominoes/tests/dominoes.cairo | 4 ---- exercises/practice/hello-world/.meta/example.cairo | 2 +- exercises/practice/hello-world/src/lib.cairo | 2 +- .../largest-series-product/.meta/example.cairo | 4 ++-- .../practice/largest-series-product/src/lib.cairo | 4 ++-- exercises/practice/leap/.meta/example.cairo | 2 +- exercises/practice/leap/src/lib.cairo | 2 +- exercises/practice/linked-list/.meta/example.cairo | 2 +- exercises/practice/linked-list/src/lib.cairo | 2 +- .../lucians-luscious-lasagna/.meta/example.cairo | 8 ++++---- .../practice/lucians-luscious-lasagna/src/lib.cairo | 8 ++++---- .../practice/protein-translation/.meta/example.cairo | 4 ++-- exercises/practice/protein-translation/src/lib.cairo | 4 ++-- .../practice/rational-numbers/.meta/example.cairo | 6 +++--- exercises/practice/rational-numbers/src/lib.cairo | 6 +++--- exercises/practice/robot-simulator/.meta/example.cairo | 4 ++-- exercises/practice/robot-simulator/src/lib.cairo | 4 ++-- exercises/practice/roman-numerals/.meta/example.cairo | 2 +- exercises/practice/roman-numerals/src/lib.cairo | 2 +- exercises/practice/scrabble-score/.meta/example.cairo | 2 +- exercises/practice/scrabble-score/src/lib.cairo | 2 +- .../practice/semi-structured-logs/.meta/example.cairo | 10 +++++----- exercises/practice/semi-structured-logs/src/lib.cairo | 10 +++++----- .../practice/simple-linked-list/.meta/example.cairo | 4 ++-- exercises/practice/simple-linked-list/src/lib.cairo | 4 ++-- exercises/practice/sublist/.meta/example.cairo | 4 ++-- exercises/practice/sublist/src/lib.cairo | 4 ++-- 46 files changed, 86 insertions(+), 87 deletions(-) diff --git a/bin/verify-exercises b/bin/verify-exercises index faf07504..000b5b27 100755 --- a/bin/verify-exercises +++ b/bin/verify-exercises @@ -17,7 +17,7 @@ slug="${1:-*}" verify_exercise() { exercises_path="$repo/exercises/$1/$slug" - if ! [[ "$slug" == "*" || -d "$exercises_path" ]]; then + if ! [[ "$slug" == "*" || -d "$exercises_path" ]]; then return fi source_file_name="$2" diff --git a/config.json b/config.json index 876d0db1..161de2b1 100644 --- a/config.json +++ b/config.json @@ -34,7 +34,7 @@ "concept": [ { "slug": "low-power-embedded-game", - "name": "low-power-embedded-game", + "name": "Low-power Embedded Game", "uuid": "f3b7ce44-1667-42b4-b792-401d36aee2f1", "concepts": [ "tuples", diff --git a/exercises/practice/allergies/.meta/example.cairo b/exercises/practice/allergies/.meta/example.cairo index e58a64cd..4eed347f 100644 --- a/exercises/practice/allergies/.meta/example.cairo +++ b/exercises/practice/allergies/.meta/example.cairo @@ -1,11 +1,10 @@ -use core::traits::TryInto; #[derive(Drop)] struct Allergies { score: u32, } #[derive(Drop, Debug, PartialEq)] -enum Allergen { +pub enum Allergen { Eggs, Peanuts, Shellfish, @@ -17,7 +16,7 @@ enum Allergen { } #[generate_trait] -impl AllergiesImpl of AllergiesTrait { +pub impl AllergiesImpl of AllergiesTrait { fn new(score: u32) -> Allergies { Allergies { score } } diff --git a/exercises/practice/allergies/src/lib.cairo b/exercises/practice/allergies/src/lib.cairo index b54c841a..6a8855b0 100644 --- a/exercises/practice/allergies/src/lib.cairo +++ b/exercises/practice/allergies/src/lib.cairo @@ -2,7 +2,7 @@ struct Allergies {} #[derive(Drop, Debug, PartialEq)] -enum Allergen { +pub enum Allergen { Eggs, Peanuts, Shellfish, @@ -14,7 +14,7 @@ enum Allergen { } #[generate_trait] -impl AllergiesImpl of AllergiesTrait { +pub impl AllergiesImpl of AllergiesTrait { fn new(score: u32) -> Allergies { panic!("Given the '{score}' score, construct a new Allergies struct.") } diff --git a/exercises/practice/anagram/.meta/example.cairo b/exercises/practice/anagram/.meta/example.cairo index 3ee889e7..94df90d5 100644 --- a/exercises/practice/anagram/.meta/example.cairo +++ b/exercises/practice/anagram/.meta/example.cairo @@ -4,7 +4,7 @@ struct Set { } #[generate_trait] -impl SetImpl of SetTrait { +pub impl SetImpl of SetTrait { fn new(values: Array) -> Set { Set { values } } @@ -41,7 +41,7 @@ impl SetEq of PartialEq { } } -fn anagrams_for(word: @ByteArray, inputs: @Set) -> Set { +pub fn anagrams_for(word: @ByteArray, inputs: @Set) -> Set { let mut word_sorted = @sort_ignore_case(word); let mut anagrams = Set { values: array![] }; let mut i = inputs.values.len(); diff --git a/exercises/practice/anagram/src/lib.cairo b/exercises/practice/anagram/src/lib.cairo index f3e187a1..a4dff538 100644 --- a/exercises/practice/anagram/src/lib.cairo +++ b/exercises/practice/anagram/src/lib.cairo @@ -2,7 +2,7 @@ struct Set {} #[generate_trait] -impl SetImpl of SetTrait { +pub impl SetImpl of SetTrait { fn new(values: Array) -> Set { panic!() } @@ -18,6 +18,6 @@ impl SetEq of PartialEq { } } -fn anagrams_for(word: @ByteArray, inputs: @Set) -> Set { +pub fn anagrams_for(word: @ByteArray, inputs: @Set) -> Set { panic!() } diff --git a/exercises/practice/armstrong-numbers/.meta/example.cairo b/exercises/practice/armstrong-numbers/.meta/example.cairo index 9b6f4c63..04b5b4a1 100644 --- a/exercises/practice/armstrong-numbers/.meta/example.cairo +++ b/exercises/practice/armstrong-numbers/.meta/example.cairo @@ -1,4 +1,4 @@ -fn is_armstrong_number(mut num: u128) -> bool { +pub fn is_armstrong_number(mut num: u128) -> bool { let mut original_num = num; let digits = count_digits(num); loop { diff --git a/exercises/practice/armstrong-numbers/src/lib.cairo b/exercises/practice/armstrong-numbers/src/lib.cairo index c1d394b2..27d040ae 100644 --- a/exercises/practice/armstrong-numbers/src/lib.cairo +++ b/exercises/practice/armstrong-numbers/src/lib.cairo @@ -1,3 +1,3 @@ -fn is_armstrong_number(num: u128) -> bool { +pub fn is_armstrong_number(num: u128) -> bool { panic!("true if {num} is an armstrong number") } diff --git a/exercises/practice/beer-song/.meta/example.cairo b/exercises/practice/beer-song/.meta/example.cairo index f763e51a..3628f503 100644 --- a/exercises/practice/beer-song/.meta/example.cairo +++ b/exercises/practice/beer-song/.meta/example.cairo @@ -1,4 +1,4 @@ -fn verse(n: u32) -> ByteArray { +pub fn verse(n: u32) -> ByteArray { match n { 0 => "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, 99 bottles of beer on the wall.\n", 1 => "1 bottle of beer on the wall, 1 bottle of beer.\nTake it down and pass it around, no more bottles of beer on the wall.\n", @@ -10,7 +10,7 @@ fn verse(n: u32) -> ByteArray { } } -fn verses(start: u32, take_count: u32) -> ByteArray { +pub fn verses(start: u32, take_count: u32) -> ByteArray { assert!(0 <= start && start <= 99, "Start verse must be between 0 and 99"); assert!(0 <= take_count && take_count <= 99, "Count of bottles must be between 0 and 99"); assert!(take_count <= start, "Cannot take down more than {start} bottles"); @@ -31,6 +31,6 @@ fn verses(start: u32, take_count: u32) -> ByteArray { lyrics } -fn song() -> ByteArray { +pub fn song() -> ByteArray { verses(99, 99) } diff --git a/exercises/practice/beer-song/src/lib.cairo b/exercises/practice/beer-song/src/lib.cairo index 15437bff..eadcd452 100644 --- a/exercises/practice/beer-song/src/lib.cairo +++ b/exercises/practice/beer-song/src/lib.cairo @@ -1,11 +1,11 @@ -fn verse(n: u32) -> ByteArray { +pub fn verse(n: u32) -> ByteArray { panic!("emit verse {n}") } -fn verses(start: u32, take_count: u32) -> ByteArray { +pub fn verses(start: u32, take_count: u32) -> ByteArray { panic!("sing {take_count} verses from {start}") } -fn song() -> ByteArray { +pub fn song() -> ByteArray { panic!("sing the whole song") } diff --git a/exercises/practice/binary-search/.meta/example.cairo b/exercises/practice/binary-search/.meta/example.cairo index 9ace93b2..9330fff0 100644 --- a/exercises/practice/binary-search/.meta/example.cairo +++ b/exercises/practice/binary-search/.meta/example.cairo @@ -1,4 +1,6 @@ -fn find, +Copy, +PartialOrd>(search_array: @Array, value: T) -> Option { +pub fn find, +Copy, +PartialOrd>( + search_array: @Array, value: T +) -> Option { let mut base = 0_usize; let mut slice = search_array.span(); diff --git a/exercises/practice/binary-search/src/lib.cairo b/exercises/practice/binary-search/src/lib.cairo index 15796546..89f0534e 100644 --- a/exercises/practice/binary-search/src/lib.cairo +++ b/exercises/practice/binary-search/src/lib.cairo @@ -1,4 +1,4 @@ -fn find(search_array: @Array, value: usize) -> Option { +pub fn find(search_array: @Array, value: usize) -> Option { panic!( "Using the binary search algorithm, find the element '{value}' in the array '{search_array:?}' and return its index." ) diff --git a/exercises/practice/clock/.meta/example.cairo b/exercises/practice/clock/.meta/example.cairo index e8c02d8a..72982a0c 100644 --- a/exercises/practice/clock/.meta/example.cairo +++ b/exercises/practice/clock/.meta/example.cairo @@ -22,7 +22,7 @@ fn double_digit(n: u32) -> ByteArray { } #[generate_trait] -impl ClockImpl of ClockTrait { +pub impl ClockImpl of ClockTrait { fn new(hour: i32, minute: i32) -> Clock { ClockImpl::build(hour * 60 + minute) } diff --git a/exercises/practice/clock/src/lib.cairo b/exercises/practice/clock/src/lib.cairo index 56934f41..ff6edf2e 100644 --- a/exercises/practice/clock/src/lib.cairo +++ b/exercises/practice/clock/src/lib.cairo @@ -2,7 +2,7 @@ struct Clock {} #[generate_trait] -impl ClockImpl of ClockTrait { +pub impl ClockImpl of ClockTrait { fn new(hour: i32, minute: i32) -> Clock { panic!("implement `new`") } diff --git a/exercises/practice/clock/tests/clock.cairo b/exercises/practice/clock/tests/clock.cairo index 9698d26d..9f5f157a 100644 --- a/exercises/practice/clock/tests/clock.cairo +++ b/exercises/practice/clock/tests/clock.cairo @@ -1,4 +1,4 @@ -use clock::{ClockTrait}; +use clock::ClockTrait; // Create a new clock with an initial time diff --git a/exercises/practice/custom-set/.meta/example.cairo b/exercises/practice/custom-set/.meta/example.cairo index f7eb5e62..612658fe 100644 --- a/exercises/practice/custom-set/.meta/example.cairo +++ b/exercises/practice/custom-set/.meta/example.cairo @@ -19,7 +19,7 @@ impl CustomSetEq< } #[generate_trait] -impl CustomSetImpl< +pub impl CustomSetImpl< T, +Copy, +Drop, +core::fmt::Display, +PartialEq > of CustomSetTrait { fn new(input: @Array) -> CustomSet { diff --git a/exercises/practice/custom-set/src/lib.cairo b/exercises/practice/custom-set/src/lib.cairo index 9214b4bd..6a45a622 100644 --- a/exercises/practice/custom-set/src/lib.cairo +++ b/exercises/practice/custom-set/src/lib.cairo @@ -14,7 +14,7 @@ impl CustomSetEq< } #[generate_trait] -impl CustomSetImpl< +pub impl CustomSetImpl< T, +Copy, +Drop, +core::fmt::Display, +PartialEq > of CustomSetTrait { fn new(input: @Array) -> CustomSet { diff --git a/exercises/practice/dominoes/.meta/example.cairo b/exercises/practice/dominoes/.meta/example.cairo index 1086d4b4..87596c80 100644 --- a/exercises/practice/dominoes/.meta/example.cairo +++ b/exercises/practice/dominoes/.meta/example.cairo @@ -1,4 +1,4 @@ -type Domino = (u8, u8); +pub type Domino = (u8, u8); /// A table keeping track of available dominoes. /// @@ -73,7 +73,7 @@ impl AvailabilityTableImpl of AvailabilityTableTrait { } } -fn chain(dominoes: @Array) -> Option> { +pub fn chain(dominoes: @Array) -> Option> { match dominoes.len() { 0 => Option::Some(array![]), 1 => { diff --git a/exercises/practice/dominoes/src/lib.cairo b/exercises/practice/dominoes/src/lib.cairo index 9f6d02ad..9f8a1612 100644 --- a/exercises/practice/dominoes/src/lib.cairo +++ b/exercises/practice/dominoes/src/lib.cairo @@ -1,4 +1,6 @@ -fn chain(dominoes: @Array<(u8, u8)>) -> Option> { +pub type Domino = (u8, u8); + +pub fn chain(dominoes: @Array) -> Option> { panic!( "From the given dominoes '{dominoes:?}' construct a proper dominoes chain or return Option::None if it is not possible." ) diff --git a/exercises/practice/dominoes/tests/dominoes.cairo b/exercises/practice/dominoes/tests/dominoes.cairo index 95207322..ab43c8f3 100644 --- a/exercises/practice/dominoes/tests/dominoes.cairo +++ b/exercises/practice/dominoes/tests/dominoes.cairo @@ -1,7 +1,3 @@ -use core::option::OptionTrait; -use core::traits::TryInto; -use core::dict::Felt252DictTrait; -use core::byte_array::ByteArrayTrait; use dominoes::{Domino, chain}; #[derive(Debug)] diff --git a/exercises/practice/hello-world/.meta/example.cairo b/exercises/practice/hello-world/.meta/example.cairo index fe31a177..9b00e2c3 100644 --- a/exercises/practice/hello-world/.meta/example.cairo +++ b/exercises/practice/hello-world/.meta/example.cairo @@ -1,3 +1,3 @@ -fn hello() -> felt252 { +pub fn hello() -> felt252 { 'Hello, World!' } diff --git a/exercises/practice/hello-world/src/lib.cairo b/exercises/practice/hello-world/src/lib.cairo index 8b9e3307..f5d7665e 100644 --- a/exercises/practice/hello-world/src/lib.cairo +++ b/exercises/practice/hello-world/src/lib.cairo @@ -1,4 +1,4 @@ // felt252, aka "field type", represents both a specific type of integer, and a string type that's limited to 31 characters -fn hello() -> felt252 { +pub fn hello() -> felt252 { 'Goodbye, Mars!' } diff --git a/exercises/practice/largest-series-product/.meta/example.cairo b/exercises/practice/largest-series-product/.meta/example.cairo index a8da9786..7700b9ac 100644 --- a/exercises/practice/largest-series-product/.meta/example.cairo +++ b/exercises/practice/largest-series-product/.meta/example.cairo @@ -1,5 +1,5 @@ #[derive(Drop, Debug, PartialEq)] -enum Error { +pub enum Error { SpanTooLong, InvalidDigit: u8, NegativeSpan, @@ -12,7 +12,7 @@ struct Product { start_index: u32, } -fn lsp(input: @ByteArray, span: i32) -> Result { +pub fn lsp(input: @ByteArray, span: i32) -> Result { // validate span if span == 0 { return Result::Ok(1); diff --git a/exercises/practice/largest-series-product/src/lib.cairo b/exercises/practice/largest-series-product/src/lib.cairo index b1c11721..f40ac688 100644 --- a/exercises/practice/largest-series-product/src/lib.cairo +++ b/exercises/practice/largest-series-product/src/lib.cairo @@ -1,10 +1,10 @@ #[derive(Drop, Debug, PartialEq)] -enum Error { +pub enum Error { SpanTooLong, InvalidDigit: u8, NegativeSpan, } -fn lsp(input: @ByteArray, span: i32) -> Result { +pub fn lsp(input: @ByteArray, span: i32) -> Result { panic!("implement the 'lsp' function") } diff --git a/exercises/practice/leap/.meta/example.cairo b/exercises/practice/leap/.meta/example.cairo index 01d1c254..a50ac065 100644 --- a/exercises/practice/leap/.meta/example.cairo +++ b/exercises/practice/leap/.meta/example.cairo @@ -1,3 +1,3 @@ -fn is_leap_year(year: u64) -> bool { +pub fn is_leap_year(year: u64) -> bool { year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) } diff --git a/exercises/practice/leap/src/lib.cairo b/exercises/practice/leap/src/lib.cairo index f3b56666..5993fb97 100644 --- a/exercises/practice/leap/src/lib.cairo +++ b/exercises/practice/leap/src/lib.cairo @@ -1,3 +1,3 @@ -fn is_leap_year(year: u64) -> bool { +pub fn is_leap_year(year: u64) -> bool { panic!("true if {year} is a leap year") } diff --git a/exercises/practice/linked-list/.meta/example.cairo b/exercises/practice/linked-list/.meta/example.cairo index a6710b24..7d81b079 100644 --- a/exercises/practice/linked-list/.meta/example.cairo +++ b/exercises/practice/linked-list/.meta/example.cairo @@ -22,7 +22,7 @@ struct Node { } #[generate_trait] -impl DoublyLinkedListImpl< +pub impl DoublyLinkedListImpl< T, +Drop, +Copy, +PartialEq, +Felt252DictValue > of DoublyLinkedListTrait { fn new() -> DoublyLinkedList { diff --git a/exercises/practice/linked-list/src/lib.cairo b/exercises/practice/linked-list/src/lib.cairo index 293066bd..1eea38f5 100644 --- a/exercises/practice/linked-list/src/lib.cairo +++ b/exercises/practice/linked-list/src/lib.cairo @@ -2,7 +2,7 @@ struct DoublyLinkedList {} #[generate_trait] -impl DoublyLinkedListImpl> of DoublyLinkedListTrait { +pub impl DoublyLinkedListImpl> of DoublyLinkedListTrait { fn new() -> DoublyLinkedList { panic!("implement 'new'") } diff --git a/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo b/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo index 8485a865..37c7a24c 100644 --- a/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo +++ b/exercises/practice/lucians-luscious-lasagna/.meta/example.cairo @@ -1,15 +1,15 @@ -fn expected_minutes_in_oven() -> u32 { +pub fn expected_minutes_in_oven() -> u32 { 40 } -fn remaining_minutes_in_oven(actual_minutes_in_oven: u32) -> u32 { +pub fn remaining_minutes_in_oven(actual_minutes_in_oven: u32) -> u32 { expected_minutes_in_oven() - actual_minutes_in_oven } -fn preparation_time_in_minutes(number_of_layers: u32) -> u32 { +pub fn preparation_time_in_minutes(number_of_layers: u32) -> u32 { number_of_layers * 2 } -fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) -> u32 { +pub fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) -> u32 { preparation_time_in_minutes(number_of_layers) + actual_minutes_in_oven } diff --git a/exercises/practice/lucians-luscious-lasagna/src/lib.cairo b/exercises/practice/lucians-luscious-lasagna/src/lib.cairo index 51308e4f..3e04a227 100644 --- a/exercises/practice/lucians-luscious-lasagna/src/lib.cairo +++ b/exercises/practice/lucians-luscious-lasagna/src/lib.cairo @@ -1,18 +1,18 @@ -fn expected_minutes_in_oven() -> u32 { +pub fn expected_minutes_in_oven() -> u32 { panic!("return expected minutes in the oven") } -fn remaining_minutes_in_oven(actual_minutes_in_oven: u32) -> u32 { +pub fn remaining_minutes_in_oven(actual_minutes_in_oven: u32) -> u32 { panic!( "calculate remaining minutes in oven given actual minutes in oven: {actual_minutes_in_oven}" ) } -fn preparation_time_in_minutes(number_of_layers: u32) -> u32 { +pub fn preparation_time_in_minutes(number_of_layers: u32) -> u32 { panic!("calculate preparation time in minutes for number of layers: {number_of_layers}") } -fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) -> u32 { +pub fn elapsed_time_in_minutes(number_of_layers: u32, actual_minutes_in_oven: u32) -> u32 { panic!( "calculate elapsed time in minutes for number of layers {number_of_layers} and actual minutes in oven {actual_minutes_in_oven}" ) diff --git a/exercises/practice/protein-translation/.meta/example.cairo b/exercises/practice/protein-translation/.meta/example.cairo index 490fc231..51aa5154 100644 --- a/exercises/practice/protein-translation/.meta/example.cairo +++ b/exercises/practice/protein-translation/.meta/example.cairo @@ -12,7 +12,7 @@ enum TranslateResult { Ok } -fn parse(pairs: Array<(felt252, ByteArray)>) -> CodonsInfo { +pub fn parse(pairs: Array<(felt252, ByteArray)>) -> CodonsInfo { let mut pairs = pairs; let mut actual_codons: Felt252Dict> = Default::default(); while let Option::Some((codon, name)) = pairs @@ -23,7 +23,7 @@ fn parse(pairs: Array<(felt252, ByteArray)>) -> CodonsInfo { } #[generate_trait] -impl CodonsInfoImpl of CodonsInfoTrait { +pub impl CodonsInfoImpl of CodonsInfoTrait { fn name_for(ref self: CodonsInfo, codon: felt252) -> ByteArray { let (entry, _name) = self.actual_codons.entry(codon); let name = _name.deref_or(""); diff --git a/exercises/practice/protein-translation/src/lib.cairo b/exercises/practice/protein-translation/src/lib.cairo index 8bc51034..79469dd2 100644 --- a/exercises/practice/protein-translation/src/lib.cairo +++ b/exercises/practice/protein-translation/src/lib.cairo @@ -1,12 +1,12 @@ #[derive(Destruct)] struct CodonsInfo {} -fn parse(pairs: Array<(felt252, ByteArray)>) -> CodonsInfo { +pub fn parse(pairs: Array<(felt252, ByteArray)>) -> CodonsInfo { panic!() } #[generate_trait] -impl CodonsInfoImpl of CodonsInfoTrait { +pub impl CodonsInfoImpl of CodonsInfoTrait { fn name_for(ref self: CodonsInfo, codon: felt252) -> ByteArray { panic!() } diff --git a/exercises/practice/rational-numbers/.meta/example.cairo b/exercises/practice/rational-numbers/.meta/example.cairo index f1cd83f3..0ee2f3dc 100644 --- a/exercises/practice/rational-numbers/.meta/example.cairo +++ b/exercises/practice/rational-numbers/.meta/example.cairo @@ -7,7 +7,7 @@ struct Rational { } #[generate_trait] -impl RationalImpl of RationalTrait { +pub impl RationalImpl of RationalTrait { fn new(numer: i128, denom: i128) -> Rational { assert!(denom != 0, "denominator cannot be 0"); @@ -71,14 +71,14 @@ impl RationalDiv of Div { } #[generate_trait] -impl RationalAbs of RationalAbsTrait { +pub impl RationalAbs of RationalAbsTrait { fn abs(self: @Rational) -> Rational { RationalTrait::new(to_i128(abs(*self.numer)), to_i128(*self.denom)) } } #[generate_trait] -impl RationalPow of RationalPowTrait { +pub impl RationalPow of RationalPowTrait { fn pow(self: @Rational, power: i128) -> Rational { if *self.numer == 0 { return *self; diff --git a/exercises/practice/rational-numbers/src/lib.cairo b/exercises/practice/rational-numbers/src/lib.cairo index e3a75c8f..67e1f443 100644 --- a/exercises/practice/rational-numbers/src/lib.cairo +++ b/exercises/practice/rational-numbers/src/lib.cairo @@ -4,7 +4,7 @@ use core::fmt::{Debug, Formatter, Error}; struct Rational {} #[generate_trait] -impl RationalImpl of RationalTrait { +pub impl RationalImpl of RationalTrait { fn new(numer: i128, denom: i128) -> Rational { panic!() } @@ -51,14 +51,14 @@ impl RationalDiv of Div { } #[generate_trait] -impl RationalAbs of RationalAbsTrait { +pub impl RationalAbs of RationalAbsTrait { fn abs(self: @Rational) -> Rational { panic!() } } #[generate_trait] -impl RationalPow of RationalPowTrait { +pub impl RationalPow of RationalPowTrait { fn pow(self: @Rational, power: i128) -> Rational { panic!() } diff --git a/exercises/practice/robot-simulator/.meta/example.cairo b/exercises/practice/robot-simulator/.meta/example.cairo index 53167c68..6d7d689d 100644 --- a/exercises/practice/robot-simulator/.meta/example.cairo +++ b/exercises/practice/robot-simulator/.meta/example.cairo @@ -1,5 +1,5 @@ #[derive(Drop, Debug, Copy, PartialEq)] -enum Direction { +pub enum Direction { North, East, South, @@ -56,7 +56,7 @@ struct Robot { } #[generate_trait] -impl RobotImpl of RobotTrait { +pub impl RobotImpl of RobotTrait { fn new(x: i32, y: i32, d: Direction) -> Robot { RobotTrait::build(PositionTrait::new(x, y), d) } diff --git a/exercises/practice/robot-simulator/src/lib.cairo b/exercises/practice/robot-simulator/src/lib.cairo index a2472ffa..184f1121 100644 --- a/exercises/practice/robot-simulator/src/lib.cairo +++ b/exercises/practice/robot-simulator/src/lib.cairo @@ -2,7 +2,7 @@ // In order to pass the tests you can add-to or change any of this code. #[derive(Drop, PartialEq, Debug)] -enum Direction { +pub enum Direction { North, East, South, @@ -13,7 +13,7 @@ enum Direction { struct Robot {} #[generate_trait] -impl RobotImpl of RobotTrait { +pub impl RobotImpl of RobotTrait { fn new(x: i32, y: i32, d: Direction) -> Robot { panic!("Create a robot at (x, y) facing {d:?}") } diff --git a/exercises/practice/roman-numerals/.meta/example.cairo b/exercises/practice/roman-numerals/.meta/example.cairo index bd9bcd1f..9bd085f3 100644 --- a/exercises/practice/roman-numerals/.meta/example.cairo +++ b/exercises/practice/roman-numerals/.meta/example.cairo @@ -1,7 +1,7 @@ use core::fmt::{Display, Error, Formatter}; #[derive(Drop)] -struct Roman { +pub struct Roman { value: ByteArray, } diff --git a/exercises/practice/roman-numerals/src/lib.cairo b/exercises/practice/roman-numerals/src/lib.cairo index 06a42218..20ccae12 100644 --- a/exercises/practice/roman-numerals/src/lib.cairo +++ b/exercises/practice/roman-numerals/src/lib.cairo @@ -1,7 +1,7 @@ use core::fmt::{Display, Error, Formatter}; #[derive(Drop)] -struct Roman {} +pub struct Roman {} impl U32IntoRoman of Into { #[must_use] diff --git a/exercises/practice/scrabble-score/.meta/example.cairo b/exercises/practice/scrabble-score/.meta/example.cairo index 0c19f7f4..2569c81a 100644 --- a/exercises/practice/scrabble-score/.meta/example.cairo +++ b/exercises/practice/scrabble-score/.meta/example.cairo @@ -1,4 +1,4 @@ -fn score(word: ByteArray) -> u16 { +pub fn score(word: ByteArray) -> u16 { let mut values = dictionary(); let mut score = 0; let mut i = 0; diff --git a/exercises/practice/scrabble-score/src/lib.cairo b/exercises/practice/scrabble-score/src/lib.cairo index e42554cd..24878e6a 100644 --- a/exercises/practice/scrabble-score/src/lib.cairo +++ b/exercises/practice/scrabble-score/src/lib.cairo @@ -1,3 +1,3 @@ -fn score(word: ByteArray) -> u16 { +pub fn score(word: ByteArray) -> u16 { panic!("Score {word} in Scrabble.") } diff --git a/exercises/practice/semi-structured-logs/.meta/example.cairo b/exercises/practice/semi-structured-logs/.meta/example.cairo index 50de8f58..4f689962 100644 --- a/exercises/practice/semi-structured-logs/.meta/example.cairo +++ b/exercises/practice/semi-structured-logs/.meta/example.cairo @@ -1,12 +1,12 @@ #[derive(Drop)] -enum LogLevel { +pub enum LogLevel { Info, Warning, Error, Debug, } -fn log(level: LogLevel, message: ByteArray) -> ByteArray { +pub fn log(level: LogLevel, message: ByteArray) -> ByteArray { match level { LogLevel::Info => info(message), LogLevel::Warning => warn(message), @@ -15,14 +15,14 @@ fn log(level: LogLevel, message: ByteArray) -> ByteArray { } } -fn info(message: ByteArray) -> ByteArray { +pub fn info(message: ByteArray) -> ByteArray { format!("[INFO]: {message}") } -fn warn(message: ByteArray) -> ByteArray { +pub fn warn(message: ByteArray) -> ByteArray { format!("[WARNING]: {message}") } -fn error(message: ByteArray) -> ByteArray { +pub fn error(message: ByteArray) -> ByteArray { format!("[ERROR]: {message}") } diff --git a/exercises/practice/semi-structured-logs/src/lib.cairo b/exercises/practice/semi-structured-logs/src/lib.cairo index 0d3c550b..9b630b0d 100644 --- a/exercises/practice/semi-structured-logs/src/lib.cairo +++ b/exercises/practice/semi-structured-logs/src/lib.cairo @@ -1,6 +1,6 @@ /// various log levels #[derive(Drop)] -enum LogLevel { +pub enum LogLevel { Info, Warning, Error, @@ -8,18 +8,18 @@ enum LogLevel { } /// primary function for emitting logs -fn log(level: LogLevel, message: ByteArray) -> ByteArray { +pub fn log(level: LogLevel, message: ByteArray) -> ByteArray { panic!("return a message for the given log level") } -fn info(message: ByteArray) -> ByteArray { +pub fn info(message: ByteArray) -> ByteArray { panic!("return a message for info log level") } -fn warn(message: ByteArray) -> ByteArray { +pub fn warn(message: ByteArray) -> ByteArray { panic!("return a message for warn log level") } -fn error(message: ByteArray) -> ByteArray { +pub fn error(message: ByteArray) -> ByteArray { panic!("return a message for error log level") } diff --git a/exercises/practice/simple-linked-list/.meta/example.cairo b/exercises/practice/simple-linked-list/.meta/example.cairo index c3e14ada..6f86c635 100644 --- a/exercises/practice/simple-linked-list/.meta/example.cairo +++ b/exercises/practice/simple-linked-list/.meta/example.cairo @@ -1,5 +1,5 @@ #[derive(Drop, Copy)] -struct SimpleLinkedList { +pub struct SimpleLinkedList { head: List, len: usize, } @@ -13,7 +13,7 @@ struct Node { } #[generate_trait] -impl SimpleLinkedListImpl, +Copy> of SimpleLinkedListTrait { +pub impl SimpleLinkedListImpl, +Copy> of SimpleLinkedListTrait { fn new() -> SimpleLinkedList { SimpleLinkedList { head: Option::None, len: 0 } } diff --git a/exercises/practice/simple-linked-list/src/lib.cairo b/exercises/practice/simple-linked-list/src/lib.cairo index ad63e3fd..fcc31c36 100644 --- a/exercises/practice/simple-linked-list/src/lib.cairo +++ b/exercises/practice/simple-linked-list/src/lib.cairo @@ -1,8 +1,8 @@ #[derive(Drop, Copy)] -struct SimpleLinkedList {} +pub struct SimpleLinkedList {} #[generate_trait] -impl SimpleLinkedListImpl, +Copy> of SimpleLinkedListTrait { +pub impl SimpleLinkedListImpl, +Copy> of SimpleLinkedListTrait { fn new() -> SimpleLinkedList { panic!() } diff --git a/exercises/practice/sublist/.meta/example.cairo b/exercises/practice/sublist/.meta/example.cairo index 0d4e2802..feefeb4c 100644 --- a/exercises/practice/sublist/.meta/example.cairo +++ b/exercises/practice/sublist/.meta/example.cairo @@ -1,12 +1,12 @@ #[derive(Drop, Debug, PartialEq)] -enum Comparison { +pub enum Comparison { Equal, Sublist, Superlist, Unequal, } -fn sublist>(a: @Array, b: @Array) -> Comparison { +pub fn sublist>(a: @Array, b: @Array) -> Comparison { let a = a.span(); let b = b.span(); if a == b { diff --git a/exercises/practice/sublist/src/lib.cairo b/exercises/practice/sublist/src/lib.cairo index eda73d49..999ebbb2 100644 --- a/exercises/practice/sublist/src/lib.cairo +++ b/exercises/practice/sublist/src/lib.cairo @@ -1,11 +1,11 @@ #[derive(Drop, Debug, PartialEq)] -enum Comparison { +pub enum Comparison { Equal, Sublist, Superlist, Unequal, } -fn sublist>(a: @Array, b: @Array) -> Comparison { +pub fn sublist>(a: @Array, b: @Array) -> Comparison { panic!() } From 8f7b8e4db009b46c25bccc2b2a2ab620f9d2b4b1 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:20:33 +0200 Subject: [PATCH 07/15] Add AI model training usecase to ABOUT.md --- docs/ABOUT.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/ABOUT.md b/docs/ABOUT.md index 42a92ebf..66004d69 100644 --- a/docs/ABOUT.md +++ b/docs/ABOUT.md @@ -6,6 +6,8 @@ This means that you can perform time consuming operations on a machine you don't One major usecase of Cairo is writing smart contracts for [Starknet](https://www.starknet.io/), a Layer 2 built on top of Ethereum. Instead of having all the participants of the network verify all user interactions, only one node, called the prover, executes the programs and generates proofs that the computations were done correctly. These proofs are then verified by an Ethereum smart contract, requiring significantly less computational power, which increases throughput and reduces transaction costs while preserving Ethereum security. +Another notable use case of Cairo is in AI model training. Suppose you have a large dataset and wish to train an AI model on it but lack the necessary infrastructure. You can pay a major AI model provider to train the AI on your data and return the trained model. Since the provider used Cairo to write and train their AI model, they can produce a "proof" that you can use to verify that they did actually use the complete dataset you provided, ensuring the integrity of the training process and guaranteeing that no other data or partial data was used. + Cairo differs significantly from traditional programming languages, particularly in its execution and performance optimizations. Programs can be executed by a prover, similar to other languages, though with some performance overhead due to virtualization of the language. When proofs are verified, efficiency is crucial as verification may occur on small machines, and Cairo has various advantages to improve verification speed. A notable one is [non-determinism][np], which is the idea that you can theoretically use a different algorithm for verifying than for computing. Take the example of sorting an array in Cairo - the prover has to sort the array, while the verifier only needs to check that the array is sorted, which is much cheaper. Additionally, Cairo's memory model is immutable, meaning values cannot be changed once written. Cairo provides abstractions that help developers work with these constraints, but it does not fully simulate mutability. This means that developers are required to be mindful of memory management and data structures to optimize performance. The home page for Cairo is [cairo-lang.org](https://www.cairo-lang.org/). From ac19489ef9590e6e696c1069ec91cad391e1cc03 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:23:03 +0200 Subject: [PATCH 08/15] Update TESTS --- docs/TESTS.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/TESTS.md b/docs/TESTS.md index 6424b95e..c9d18324 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -20,12 +20,19 @@ cd path/to/exercise And then run the following command: ```bash -$ scarb cairo-test +scarb cairo-test ``` Only the first test is enabled by default. After you are ready to pass the next test, remove the ignore flag from the next test (`#[ignore]`). -You can also remove the flag from all the tests at once if you prefer or run the above command with the appropriate flag `scarb cairo-test --include-ignored`. + +To run all tests including the ignored ones, you can run: + +```bash +scarb cairo-test --include-ignored +``` + +You can also remove the `ignore` flag from all the tests if you prefer Feel free to write as little code as possible to get the tests to pass. The test failures will guide you to what should be written next. From 105f1d4588f783f26a9f07ef5badbc023c0559c8 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:38:51 +0200 Subject: [PATCH 09/15] Rename all int. tests to use snake_case --- ...-embedded-game.cairo => low_power_embedded_game.cairo} | 0 .../{armstrong-numbers.cairo => armstrong_numbers.cairo} | 0 .../beer-song/tests/{beer-song.cairo => beer_song.cairo} | 0 .../tests/{binary-search.cairo => binary_search.cairo} | 0 .../tests/{custom-set.cairo => custom_set.cairo} | 0 .../tests/{hello-world.cairo => hello_world.cairo} | 0 ...-series-product.cairo => largest_series_product.cairo} | 0 .../tests/{linked-list.cairo => linked_list.cairo} | 0 ...cious-lasagna.cairo => lucians_luscious_lasagna.cairo} | 0 ...rotein-translation.cairo => protein_translation.cairo} | 0 .../{rational-numbers.cairo => rational_numbers.cairo} | 0 .../{robot-simulator.cairo => robot_simulator.cairo} | 0 .../tests/{roman-numerals.cairo => roman_numerals.cairo} | 0 .../tests/{scrabble-score.cairo => scrabble_score.cairo} | 0 ...i-structured-logs.cairo => semi_structured_logs.cairo} | 0 ...{simple-linked-list.cairo => simple_linked_list.cairo} | 0 t.sh | 8 ++++++++ 17 files changed, 8 insertions(+) rename exercises/concept/low-power-embedded-game/tests/{low-power-embedded-game.cairo => low_power_embedded_game.cairo} (100%) rename exercises/practice/armstrong-numbers/tests/{armstrong-numbers.cairo => armstrong_numbers.cairo} (100%) rename exercises/practice/beer-song/tests/{beer-song.cairo => beer_song.cairo} (100%) rename exercises/practice/binary-search/tests/{binary-search.cairo => binary_search.cairo} (100%) rename exercises/practice/custom-set/tests/{custom-set.cairo => custom_set.cairo} (100%) rename exercises/practice/hello-world/tests/{hello-world.cairo => hello_world.cairo} (100%) rename exercises/practice/largest-series-product/tests/{largest-series-product.cairo => largest_series_product.cairo} (100%) rename exercises/practice/linked-list/tests/{linked-list.cairo => linked_list.cairo} (100%) rename exercises/practice/lucians-luscious-lasagna/tests/{lucians-luscious-lasagna.cairo => lucians_luscious_lasagna.cairo} (100%) rename exercises/practice/protein-translation/tests/{protein-translation.cairo => protein_translation.cairo} (100%) rename exercises/practice/rational-numbers/tests/{rational-numbers.cairo => rational_numbers.cairo} (100%) rename exercises/practice/robot-simulator/tests/{robot-simulator.cairo => robot_simulator.cairo} (100%) rename exercises/practice/roman-numerals/tests/{roman-numerals.cairo => roman_numerals.cairo} (100%) rename exercises/practice/scrabble-score/tests/{scrabble-score.cairo => scrabble_score.cairo} (100%) rename exercises/practice/semi-structured-logs/tests/{semi-structured-logs.cairo => semi_structured_logs.cairo} (100%) rename exercises/practice/simple-linked-list/tests/{simple-linked-list.cairo => simple_linked_list.cairo} (100%) create mode 100755 t.sh diff --git a/exercises/concept/low-power-embedded-game/tests/low-power-embedded-game.cairo b/exercises/concept/low-power-embedded-game/tests/low_power_embedded_game.cairo similarity index 100% rename from exercises/concept/low-power-embedded-game/tests/low-power-embedded-game.cairo rename to exercises/concept/low-power-embedded-game/tests/low_power_embedded_game.cairo diff --git a/exercises/practice/armstrong-numbers/tests/armstrong-numbers.cairo b/exercises/practice/armstrong-numbers/tests/armstrong_numbers.cairo similarity index 100% rename from exercises/practice/armstrong-numbers/tests/armstrong-numbers.cairo rename to exercises/practice/armstrong-numbers/tests/armstrong_numbers.cairo diff --git a/exercises/practice/beer-song/tests/beer-song.cairo b/exercises/practice/beer-song/tests/beer_song.cairo similarity index 100% rename from exercises/practice/beer-song/tests/beer-song.cairo rename to exercises/practice/beer-song/tests/beer_song.cairo diff --git a/exercises/practice/binary-search/tests/binary-search.cairo b/exercises/practice/binary-search/tests/binary_search.cairo similarity index 100% rename from exercises/practice/binary-search/tests/binary-search.cairo rename to exercises/practice/binary-search/tests/binary_search.cairo diff --git a/exercises/practice/custom-set/tests/custom-set.cairo b/exercises/practice/custom-set/tests/custom_set.cairo similarity index 100% rename from exercises/practice/custom-set/tests/custom-set.cairo rename to exercises/practice/custom-set/tests/custom_set.cairo diff --git a/exercises/practice/hello-world/tests/hello-world.cairo b/exercises/practice/hello-world/tests/hello_world.cairo similarity index 100% rename from exercises/practice/hello-world/tests/hello-world.cairo rename to exercises/practice/hello-world/tests/hello_world.cairo diff --git a/exercises/practice/largest-series-product/tests/largest-series-product.cairo b/exercises/practice/largest-series-product/tests/largest_series_product.cairo similarity index 100% rename from exercises/practice/largest-series-product/tests/largest-series-product.cairo rename to exercises/practice/largest-series-product/tests/largest_series_product.cairo diff --git a/exercises/practice/linked-list/tests/linked-list.cairo b/exercises/practice/linked-list/tests/linked_list.cairo similarity index 100% rename from exercises/practice/linked-list/tests/linked-list.cairo rename to exercises/practice/linked-list/tests/linked_list.cairo diff --git a/exercises/practice/lucians-luscious-lasagna/tests/lucians-luscious-lasagna.cairo b/exercises/practice/lucians-luscious-lasagna/tests/lucians_luscious_lasagna.cairo similarity index 100% rename from exercises/practice/lucians-luscious-lasagna/tests/lucians-luscious-lasagna.cairo rename to exercises/practice/lucians-luscious-lasagna/tests/lucians_luscious_lasagna.cairo diff --git a/exercises/practice/protein-translation/tests/protein-translation.cairo b/exercises/practice/protein-translation/tests/protein_translation.cairo similarity index 100% rename from exercises/practice/protein-translation/tests/protein-translation.cairo rename to exercises/practice/protein-translation/tests/protein_translation.cairo diff --git a/exercises/practice/rational-numbers/tests/rational-numbers.cairo b/exercises/practice/rational-numbers/tests/rational_numbers.cairo similarity index 100% rename from exercises/practice/rational-numbers/tests/rational-numbers.cairo rename to exercises/practice/rational-numbers/tests/rational_numbers.cairo diff --git a/exercises/practice/robot-simulator/tests/robot-simulator.cairo b/exercises/practice/robot-simulator/tests/robot_simulator.cairo similarity index 100% rename from exercises/practice/robot-simulator/tests/robot-simulator.cairo rename to exercises/practice/robot-simulator/tests/robot_simulator.cairo diff --git a/exercises/practice/roman-numerals/tests/roman-numerals.cairo b/exercises/practice/roman-numerals/tests/roman_numerals.cairo similarity index 100% rename from exercises/practice/roman-numerals/tests/roman-numerals.cairo rename to exercises/practice/roman-numerals/tests/roman_numerals.cairo diff --git a/exercises/practice/scrabble-score/tests/scrabble-score.cairo b/exercises/practice/scrabble-score/tests/scrabble_score.cairo similarity index 100% rename from exercises/practice/scrabble-score/tests/scrabble-score.cairo rename to exercises/practice/scrabble-score/tests/scrabble_score.cairo diff --git a/exercises/practice/semi-structured-logs/tests/semi-structured-logs.cairo b/exercises/practice/semi-structured-logs/tests/semi_structured_logs.cairo similarity index 100% rename from exercises/practice/semi-structured-logs/tests/semi-structured-logs.cairo rename to exercises/practice/semi-structured-logs/tests/semi_structured_logs.cairo diff --git a/exercises/practice/simple-linked-list/tests/simple-linked-list.cairo b/exercises/practice/simple-linked-list/tests/simple_linked_list.cairo similarity index 100% rename from exercises/practice/simple-linked-list/tests/simple-linked-list.cairo rename to exercises/practice/simple-linked-list/tests/simple_linked_list.cairo diff --git a/t.sh b/t.sh new file mode 100755 index 00000000..a6067c9a --- /dev/null +++ b/t.sh @@ -0,0 +1,8 @@ +dirs="./exercises/*/*" +for test_file in $dirs; do + tests="$test_file/tests/*" + kebab_file=${tests[0]} + kebab_name=$(basename $kebab_file) + snake_name="${kebab_name//-/_}" + mv $kebab_file "$test_file/tests/$snake_name" +done From f51d997ee680f31a7119509cc8ee2e4ad730ba20 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:39:02 +0200 Subject: [PATCH 10/15] Remove t.sh --- t.sh | 8 -------- 1 file changed, 8 deletions(-) delete mode 100755 t.sh diff --git a/t.sh b/t.sh deleted file mode 100755 index a6067c9a..00000000 --- a/t.sh +++ /dev/null @@ -1,8 +0,0 @@ -dirs="./exercises/*/*" -for test_file in $dirs; do - tests="$test_file/tests/*" - kebab_file=${tests[0]} - kebab_name=$(basename $kebab_file) - snake_name="${kebab_name//-/_}" - mv $kebab_file "$test_file/tests/$snake_name" -done From 1c7cea6a058febb82f8bd78c926224a31d8032f4 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:40:17 +0200 Subject: [PATCH 11/15] kebab_slug -> snake_slug in config.json --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 161de2b1..c83ae0e3 100644 --- a/config.json +++ b/config.json @@ -21,7 +21,7 @@ "Scarb.toml" ], "test": [ - "tests/%{kebab_slug}.cairo" + "tests/%{snake_slug}.cairo" ], "example": [ ".meta/example.cairo" From 0e9ab0806b64280399fabd17f7e20c7954d16e81 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:41:45 +0200 Subject: [PATCH 12/15] Update TESTS --- docs/TESTS.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/TESTS.md b/docs/TESTS.md index c9d18324..54299895 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -26,14 +26,12 @@ scarb cairo-test Only the first test is enabled by default. After you are ready to pass the next test, remove the ignore flag from the next test (`#[ignore]`). -To run all tests including the ignored ones, you can run: +To run all tests including the ignored ones, you can remove the `ignore` flag from all the tests, or you can just run: ```bash scarb cairo-test --include-ignored ``` -You can also remove the `ignore` flag from all the tests if you prefer - Feel free to write as little code as possible to get the tests to pass. The test failures will guide you to what should be written next. From 9658c2d4a66cde131dafed4a658f58c184980de0 Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:52:42 +0200 Subject: [PATCH 13/15] Fix int. test names in exercise config.jsons --- exercises/concept/low-power-embedded-game/.meta/config.json | 2 +- exercises/practice/armstrong-numbers/.meta/config.json | 2 +- exercises/practice/beer-song/.meta/config.json | 2 +- exercises/practice/binary-search/.meta/config.json | 2 +- exercises/practice/custom-set/.meta/config.json | 2 +- exercises/practice/hello-world/.meta/config.json | 2 +- exercises/practice/largest-series-product/.meta/config.json | 2 +- exercises/practice/linked-list/.meta/config.json | 2 +- exercises/practice/lucians-luscious-lasagna/.meta/config.json | 2 +- exercises/practice/protein-translation/.meta/config.json | 2 +- exercises/practice/rational-numbers/.meta/config.json | 2 +- exercises/practice/robot-simulator/.meta/config.json | 2 +- exercises/practice/roman-numerals/.meta/config.json | 2 +- exercises/practice/scrabble-score/.meta/config.json | 2 +- exercises/practice/semi-structured-logs/.meta/config.json | 2 +- exercises/practice/simple-linked-list/.meta/config.json | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/exercises/concept/low-power-embedded-game/.meta/config.json b/exercises/concept/low-power-embedded-game/.meta/config.json index 3fdfdd35..f294a0f3 100644 --- a/exercises/concept/low-power-embedded-game/.meta/config.json +++ b/exercises/concept/low-power-embedded-game/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/low-power-embedded-game.cairo" + "tests/low_power_embedded_game.cairo" ], "exemplar": [ ".meta/exemplar.cairo" diff --git a/exercises/practice/armstrong-numbers/.meta/config.json b/exercises/practice/armstrong-numbers/.meta/config.json index f95797ee..64f0540c 100644 --- a/exercises/practice/armstrong-numbers/.meta/config.json +++ b/exercises/practice/armstrong-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/armstrong-numbers.cairo" + "tests/armstrong_numbers.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/beer-song/.meta/config.json b/exercises/practice/beer-song/.meta/config.json index 5fef4729..148eac81 100644 --- a/exercises/practice/beer-song/.meta/config.json +++ b/exercises/practice/beer-song/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/beer-song.cairo" + "tests/beer_song.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/binary-search/.meta/config.json b/exercises/practice/binary-search/.meta/config.json index f35c1d18..61361e5e 100644 --- a/exercises/practice/binary-search/.meta/config.json +++ b/exercises/practice/binary-search/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/binary-search.cairo" + "tests/binary_search.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/custom-set/.meta/config.json b/exercises/practice/custom-set/.meta/config.json index d3efb500..b47aecfc 100644 --- a/exercises/practice/custom-set/.meta/config.json +++ b/exercises/practice/custom-set/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/custom-set.cairo" + "tests/custom_set.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/hello-world/.meta/config.json b/exercises/practice/hello-world/.meta/config.json index ea0a3f2e..3a9f5392 100644 --- a/exercises/practice/hello-world/.meta/config.json +++ b/exercises/practice/hello-world/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/hello-world.cairo" + "tests/hello_world.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/largest-series-product/.meta/config.json b/exercises/practice/largest-series-product/.meta/config.json index 3d3162f3..6367d969 100644 --- a/exercises/practice/largest-series-product/.meta/config.json +++ b/exercises/practice/largest-series-product/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/largest-series-product.cairo" + "tests/largest_series_product.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/linked-list/.meta/config.json b/exercises/practice/linked-list/.meta/config.json index 461eb065..8d95e7da 100644 --- a/exercises/practice/linked-list/.meta/config.json +++ b/exercises/practice/linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/linked-list.cairo" + "tests/linked_list.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/lucians-luscious-lasagna/.meta/config.json b/exercises/practice/lucians-luscious-lasagna/.meta/config.json index 28a53811..cd731941 100644 --- a/exercises/practice/lucians-luscious-lasagna/.meta/config.json +++ b/exercises/practice/lucians-luscious-lasagna/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/lucians-luscious-lasagna.cairo" + "tests/lucians_luscious_lasagna.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/protein-translation/.meta/config.json b/exercises/practice/protein-translation/.meta/config.json index f4e4c721..930d238e 100644 --- a/exercises/practice/protein-translation/.meta/config.json +++ b/exercises/practice/protein-translation/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/protein-translation.cairo" + "tests/protein_translation.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/rational-numbers/.meta/config.json b/exercises/practice/rational-numbers/.meta/config.json index 99f837cc..29a2d88b 100644 --- a/exercises/practice/rational-numbers/.meta/config.json +++ b/exercises/practice/rational-numbers/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/rational-numbers.cairo" + "tests/rational_numbers.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/robot-simulator/.meta/config.json b/exercises/practice/robot-simulator/.meta/config.json index 93a5674b..ce425c94 100644 --- a/exercises/practice/robot-simulator/.meta/config.json +++ b/exercises/practice/robot-simulator/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/robot-simulator.cairo" + "tests/robot_simulator.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/roman-numerals/.meta/config.json b/exercises/practice/roman-numerals/.meta/config.json index 943f3305..2fdbdda8 100644 --- a/exercises/practice/roman-numerals/.meta/config.json +++ b/exercises/practice/roman-numerals/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/roman-numerals.cairo" + "tests/roman_numerals.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/scrabble-score/.meta/config.json b/exercises/practice/scrabble-score/.meta/config.json index e4ceedd6..5a52431c 100644 --- a/exercises/practice/scrabble-score/.meta/config.json +++ b/exercises/practice/scrabble-score/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/scrabble-score.cairo" + "tests/scrabble_score.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/semi-structured-logs/.meta/config.json b/exercises/practice/semi-structured-logs/.meta/config.json index fd5ca7f3..c7389a42 100644 --- a/exercises/practice/semi-structured-logs/.meta/config.json +++ b/exercises/practice/semi-structured-logs/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/semi-structured-logs.cairo" + "tests/semi_structured_logs.cairo" ], "example": [ ".meta/example.cairo" diff --git a/exercises/practice/simple-linked-list/.meta/config.json b/exercises/practice/simple-linked-list/.meta/config.json index 489e1352..49bb1d83 100644 --- a/exercises/practice/simple-linked-list/.meta/config.json +++ b/exercises/practice/simple-linked-list/.meta/config.json @@ -8,7 +8,7 @@ "Scarb.toml" ], "test": [ - "tests/simple-linked-list.cairo" + "tests/simple_linked_list.cairo" ], "example": [ ".meta/example.cairo" From 22a7d5239ec514f663a986c67e1dcdc1e98230cf Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:54:06 +0200 Subject: [PATCH 14/15] Remove test.sh --- exercises/practice/leap/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/leap/test.sh b/exercises/practice/leap/test.sh index 8d4d544f..ec543a03 100755 --- a/exercises/practice/leap/test.sh +++ b/exercises/practice/leap/test.sh @@ -25,7 +25,7 @@ else tmp_file=$(mktemp -p .) trap 'rm $tmp_file' EXIT INT TERM - printf "$sanitized_test_output" >"$tmp_file" + printf '%s' "$sanitized_test_output" >"$tmp_file" sorted_output=$(sort "$tmp_file") jq -n --arg output "${sorted_output}" --arg status "${status}" '{version: 1, status: $status, message: $output}' >"${results_file}" From 55b60900381b0996fb3c4b6451a1e761b805313b Mon Sep 17 00:00:00 2001 From: Nenad Date: Thu, 18 Jul 2024 14:54:36 +0200 Subject: [PATCH 15/15] Remove test.sh --- exercises/practice/leap/test.sh | 34 --------------------------------- 1 file changed, 34 deletions(-) delete mode 100755 exercises/practice/leap/test.sh diff --git a/exercises/practice/leap/test.sh b/exercises/practice/leap/test.sh deleted file mode 100755 index ec543a03..00000000 --- a/exercises/practice/leap/test.sh +++ /dev/null @@ -1,34 +0,0 @@ -test_output=$(scarb cairo-test --include-ignored 2>&1) -results_file="./results.json" - -touch "$results_file" - -test_output=$(scarb cairo-test --include-ignored 2>&1) -exit_code=$? - -if [ ${exit_code} -eq 0 ]; then - jq -n '{version: 1, status: "pass"}' >"${results_file}" -else - # Sanitize the output - # TODO: enable if needed to escape quotes: test_output_inline=$(printf '%s' "${test_output}" | sed -r 's/\"/\\"/g') - test_output_inline=$(printf '%s' "${test_output}") - - # Try to distinguish between failing tests and errors - if echo "${test_output_inline}" | grep "error:"; then - status="error" - sanitized_test_output=$(echo "$test_output_inline" | awk '/Compiling/{y=1;next}y' | sed -n -e '/error: could not compile/q;p') - else - status="fail" - sanitized_test_output=$(echo "$test_output_inline" | awk '/failures:/{y=1;next}y' | sed -n -e '/Error: test result/q;p' | sed -r 's/ //g') - fi - - tmp_file=$(mktemp -p .) - trap 'rm $tmp_file' EXIT INT TERM - - printf '%s' "$sanitized_test_output" >"$tmp_file" - sorted_output=$(sort "$tmp_file") - - jq -n --arg output "${sorted_output}" --arg status "${status}" '{version: 1, status: $status, message: $output}' >"${results_file}" -fi - -echo "done"