summaryrefslogtreecommitdiff
path: root/testdata
diff options
context:
space:
mode:
Diffstat (limited to 'testdata')
-rw-r--r--testdata/scad/features/polyhedron-tests.scad27
-rw-r--r--testdata/scad/features/rotate_extrude-tests.scad3
-rw-r--r--testdata/scad/misc/search-tests-unicode.scad116
-rw-r--r--testdata/scad/misc/string-unicode.scad44
4 files changed, 189 insertions, 1 deletions
diff --git a/testdata/scad/features/polyhedron-tests.scad b/testdata/scad/features/polyhedron-tests.scad
index 690d962..1f11d7e 100644
--- a/testdata/scad/features/polyhedron-tests.scad
+++ b/testdata/scad/features/polyhedron-tests.scad
@@ -11,10 +11,35 @@ module polyhedrons() {
translate([4,0,0])
polyhedron(points = [[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],
triangles = [[0,2,4],[0,5,2],[0,4,3],[0,3,5],[1,4,2],[1,2,5],[1,3,4], [1,5,3]]);
+
+// Containing concave polygons
+translate([6,0,0])
+polyhedron(points=[
+ [-0.8,-0.8,-0.8],
+ [0,0,-0.8],
+ [0.8,-0.8,-0.8],
+ [0.8,0.8,-0.8],
+ [-0.8,0.8,-0.8],
+ [-0.8,-0.8,0.8],
+ [0,0,0.8],
+ [0.8,-0.8,0.8],
+ [0.8,0.8,0.8],
+ [-0.8,0.8,0.8],
+ ],
+ triangles=[
+ [0,1,2,3,4],
+ [5,6,1,0],
+ [6,7,2,1],
+ [7,8,3,2],
+ [8,9,4,3],
+ [9,5,0,4],
+ [9,8,7,6,5],
+ ], convexity=2);
}
polyhedrons();
translate([0,2,0]) difference() {
polyhedrons();
- translate([2,0,2]) cube([8,3,3], center=true);
+ translate([3,0,2]) cube([8,3,3], center=true);
}
+
diff --git a/testdata/scad/features/rotate_extrude-tests.scad b/testdata/scad/features/rotate_extrude-tests.scad
index 010b7d2..ec8d1cc 100644
--- a/testdata/scad/features/rotate_extrude-tests.scad
+++ b/testdata/scad/features/rotate_extrude-tests.scad
@@ -32,3 +32,6 @@ translate([50,50,0]) {
// Minimal $fn
translate([0,-60,0]) rotate_extrude($fn=1) translate([20,0,0]) circle(r=10,$fn=1);
+// Object in negative X
+translate([0,60,0]) rotate_extrude() translate([-20,0]) square(10);
+
diff --git a/testdata/scad/misc/search-tests-unicode.scad b/testdata/scad/misc/search-tests-unicode.scad
new file mode 100644
index 0000000..d863eff
--- /dev/null
+++ b/testdata/scad/misc/search-tests-unicode.scad
@@ -0,0 +1,116 @@
+//Test search with unicode strings
+
+//Helper function that pretty prints our search test
+//Expected result is checked against execution of a search() invocation and OK/FAIL is indicated
+module test_search_and_echo( exp_res, search_to_find, search_to_search, search_up_to_num_matches = undef)
+{
+ if(undef != search_up_to_num_matches)
+ {
+ assign( test_res = search(search_to_find, search_to_search, search_up_to_num_matches) )
+ echo(str("Expect ", exp_res, " for search(", search_to_find, ", ", search_to_search, ", ", search_up_to_num_matches, ")=", test_res, ". ", (exp_res == test_res)?"OK":"FAIL" ));
+ }
+ else
+ {
+ assign( test_res = search(search_to_find, search_to_search) )
+ echo(str("Expect ", exp_res, " for search(", search_to_find, ", ", search_to_search, ")=", test_res, ". ", (exp_res == test_res)?"OK":"FAIL" ));
+ }
+}
+
+
+//"Normal" text for comparison
+echo ("----- Lookup of 1 byte into 1 byte");
+//Hits - up_to_count 1
+test_search_and_echo( [0], "a","aaaa" );
+test_search_and_echo( [0], "a","aaaa",1 );
+test_search_and_echo( [0,0], "aa","aaaa" );
+test_search_and_echo( [0,0], "aa","aaaa",1 );
+
+
+//Hits - up to count 1+ (incl 0 == all)
+test_search_and_echo( [[0,1,2,3]] , "a","aaaa",0 );
+test_search_and_echo( [[0,1]], "a","aaaa",2 );
+test_search_and_echo( [[0,1,2]], "a","aaaa",3 );
+test_search_and_echo( [[0,1,2,3]] , "a","aaaa",4 );
+test_search_and_echo( [[0,1,2,3],[0,1,2,3]] , "aa","aaaa",0 );
+//Misses
+test_search_and_echo( [], "b","aaaa" );
+test_search_and_echo( [], "b","aaaa",1 );
+test_search_and_echo( [[]], "b","aaaa",0 );
+test_search_and_echo( [[]], "b","aaaa",2 );
+
+test_search_and_echo( [], "bb","aaaa" );
+test_search_and_echo( [], "bb","aaaa",1 );
+test_search_and_echo( [[],[]], "bb","aaaa",0 );
+test_search_and_echo( [[],[]], "bb","aaaa",2 );
+//Miss - empties
+test_search_and_echo( [], "","aaaa" );
+test_search_and_echo( [], "","" );
+test_search_and_echo( [], "a","" );
+
+
+//Unicode tests
+echo ("----- Lookup of multi-byte into 1 byte");
+test_search_and_echo( [], "Π›","aaaa" );
+test_search_and_echo( [], "πŸ‚‘","aaaa" );
+test_search_and_echo( [[]], "Π›","aaaa",0 );
+test_search_and_echo( [[]], "πŸ‚‘","aaaa",0 );
+
+test_search_and_echo( [], "Π›Π›","aaaa" );
+test_search_and_echo( [], "πŸ‚‘πŸ‚‘","aaaa" );
+test_search_and_echo( [[],[]], "Π›Π›","aaaa",0 );
+test_search_and_echo( [[],[]], "πŸ‚‘πŸ‚‘","aaaa",0 );
+
+echo ("----- Lookup of 1-byte into multi-byte");
+test_search_and_echo( [] , "a","Π›Π›Π›Π›" );
+test_search_and_echo( [] , "a","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘" );
+test_search_and_echo( [] , "a","Π›Π›Π›Π›",1 );
+
+test_search_and_echo( [[]] , "a","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘",0 );
+test_search_and_echo( [[]] , "a","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘",2 );
+
+echo ("----- Lookup of 1-byte into mixed multi-byte");
+test_search_and_echo( [0], "a","aΠ›aΠ›aΠ›aΠ›a" );
+test_search_and_echo( [0], "a","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a" );
+test_search_and_echo( [0], "a","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a" );
+
+test_search_and_echo( [[0,2,4,6,8]], "a","aΠ›aΠ›aΠ›aΠ›a",0 );
+test_search_and_echo( [[0,2,4,6,8]], "a","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 0 );
+test_search_and_echo( [[0,4,8]] , "a","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 0 );
+
+echo ("----- Lookup of 2-byte into 2-byte");
+test_search_and_echo( [0] , "Π›","Π›Π›Π›Π›" );
+test_search_and_echo( [[0,1,2,3]] , "Π›","Π›Π›Π›Π›",0 );
+
+echo ("----- Lookup of 2-byte into 4-byte");
+test_search_and_echo( [] , "Π›","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘" );
+
+echo ("----- Lookup of 4-byte into 4-byte");
+test_search_and_echo( [0] , "πŸ‚‘","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘" );
+test_search_and_echo( [[0,1,2,3]], "πŸ‚‘","πŸ‚‘πŸ‚‘πŸ‚‘πŸ‚‘",0 );
+
+echo ("----- Lookup of 4-byte into 2-byte");
+test_search_and_echo( [] , "πŸ‚‘","Π›Π›Π›Π›" );
+
+echo ("----- Lookup of 2-byte into mixed multi-byte");
+test_search_and_echo( [1] , "Π›","aΠ›aΠ›aΠ›aΠ›a",1 );
+test_search_and_echo( [] , "Π›","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 1 );
+test_search_and_echo( [2] , "Π›","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 1 );
+
+test_search_and_echo( [[1,3,5,7]] , "Π›","aΠ›aΠ›aΠ›aΠ›a",0 );
+test_search_and_echo( [[]] , "Π›","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 0 );
+test_search_and_echo( [[2,6]] , "Π›","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 0 );
+
+echo ("----- Lookup of 4-byte into mixed multi-byte");
+test_search_and_echo( [] , "πŸ‚‘","aΠ›aΠ›aΠ›aΠ›a",1 );
+test_search_and_echo( [1] , "πŸ‚‘","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 1 );
+
+test_search_and_echo( [[]] , "πŸ‚‘","aΠ›aΠ›aΠ›aΠ›a",0 );
+test_search_and_echo( [[1,3,5,7]] , "πŸ‚‘","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 0 );
+test_search_and_echo( [[1,3,5,7]] , "πŸ‚‘","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 0 );
+
+echo ("----- Lookup of mixed multi-byte into mixed multi-byte");
+test_search_and_echo( [[0,2,4,6,8],[1,3,5,7],[]], "aΠ›πŸ‚‘","aΠ›aΠ›aΠ›aΠ›a",0 );
+test_search_and_echo( [[0,2,4,6,8],[],[1,3,5,7]], "aΠ›πŸ‚‘","aπŸ‚‘aπŸ‚‘aπŸ‚‘aπŸ‚‘a", 0 );
+test_search_and_echo( [[0,4,8],[2,6],[1,3,5,7]] , "aΠ›πŸ‚‘","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 0 );
+test_search_and_echo( [[1,3,5,7],[0,4,8],[2,6]] , "πŸ‚‘aΠ›","aπŸ‚‘Π›πŸ‚‘aπŸ‚‘Π›πŸ‚‘a", 0 );
+
diff --git a/testdata/scad/misc/string-unicode.scad b/testdata/scad/misc/string-unicode.scad
new file mode 100644
index 0000000..1386d63
--- /dev/null
+++ b/testdata/scad/misc/string-unicode.scad
@@ -0,0 +1,44 @@
+//Test length reporting
+text_1bytes_len = "1234";
+text_2bytes_len = "Π›Π›Π›Π›";
+text_4bytes_len = "πŸ‚‘πŸ‚±πŸƒπŸƒ‘";
+
+echo( "text_1bytes_len = ", text_1bytes_len, " len = ", len(text_1bytes_len) );
+echo( "text_2bytes_len = ", text_2bytes_len, " len = ", len(text_2bytes_len) );
+echo( "text_4bytes_len = ", text_4bytes_len, " len = ", len(text_4bytes_len) );
+
+//Test how well arrays of unicode string are accessed.
+
+texts_array = [
+"DEADBEEF",
+"Π›Π΅Π½ΠΈΠ²Ρ‹ΠΉ Ρ€Ρ‹ΠΆΠΈΠΉ ΠΊΠΎΡ‚",
+"ΩƒΨ³ΩˆΩ„ Ψ§Ω„Ψ²Ω†Ψ¬Ψ¨ΩŠΩ„ Ψ§Ω„Ω‚Ψ·",
+"ζ‡Άζƒ°ηš„ε§œθ²“",
+"Àâü Γ„Γ–Γœ ß",
+"πŸ˜πŸ˜‚πŸ˜ƒπŸ˜„πŸ˜…πŸ˜†πŸ˜‡πŸ˜ˆπŸ˜‰πŸ˜ŠπŸ˜‹πŸ˜ŒπŸ˜πŸ˜ŽπŸ˜πŸ˜",
+"β β ‚β ƒβ „β …β †β ‡β ˆβ ‰β Šβ ‹β Œβ β Žβ ",
+"πŸ‚‘πŸ‚±πŸƒπŸƒ‘",
+];
+
+text_2bytes = "Π›Π΅Π½ΠΈΠ²Ρ‹ΠΉ Ρ€Ρ‹ΠΆΠΈΠΉ ΠΊΠΎΡ‚";
+text_4bytes = "πŸ‚‘πŸ‚±πŸƒπŸƒ‘";
+
+
+//Test all the normal accesses
+for (text_array_idx = [0:(len(texts_array)-1)])
+{
+ echo( "[", text_array_idx, "] = ", texts_array[text_array_idx], " of len=", len(texts_array[text_array_idx]), ":" );
+ for (text_idx = [0:(len(texts_array[text_array_idx])-1)])
+ {
+ echo( " [", text_idx, ,"]=", texts_array[text_array_idx][text_idx] );
+ }
+}
+
+//Test one past the last element of (x-byte unicode). This will be one past the length but inside the char length of the string
+echo( "Past end of unicode only 2-byte ", text_2bytes[len(text_2bytes)] );
+echo( "Past end of unicode only 4-byte ", text_4bytes[len(text_4bytes)] );
+
+//Test past the last element of (x-byte unicode). Outside both lengths.
+echo( "Past end of both 2-byte ", text_2bytes[ len(text_2bytes) * 2 ] );
+echo( "Past end of both 4-byte ", text_4bytes[ len(text_4bytes) * 4 ] );
+
contact: Jan Huwald // Impressum