5454 @test isempty (m2. views)
5555end
5656
57- @testset " complex merge" begin
57+ @testset " Duplicate face removal" begin
58+ fs = GLTriangleFace[(1 ,2 ,3 ), (2 ,3 ,4 ), (3 ,4 ,5 ), (1 ,2 ,3 ), (1 ,4 ,5 )]
59+ fs = [fs; fs]
60+ new_fs = remove_duplicates (fs)
61+ @test all (f -> f in GLTriangleFace[(1 ,2 ,3 ), (2 ,3 ,4 ), (3 ,4 ,5 ), (1 ,4 ,5 )], new_fs)
62+
63+ fs = rand (QuadFace{Int32}, 4 )
64+ new_fs = remove_duplicates ([fs; fs])
65+ @test all (in (fs), new_fs)
66+ end
67+
68+ @testset " complex merge + split" begin
5869 rects = [Rect3f (Point3f (x, y, z), Vec3f (0.5 )) for x in - 1 : 1 for y in - 1 : 1 for z in - 1 : 1 ]
5970 direct_meshes = map (rects) do r
6071 GeometryBasics. Mesh (coordinates (r), faces (r), normal = normals (r))
264275 @test faces (m) isa Vector{GLTriangleFace}
265276 @test length (faces (m)) == 12
266277 @test GeometryBasics. facetype (m) == GLTriangleFace
278+
279+ @test normal_mesh (coordinates (m), faces (m)) == m
267280 end
268281
269282 @testset " normal_uv_mesh()" begin
372385 @test length (faces (m2)) == 12
373386
374387 end
388+ end
389+
390+ @testset " map_coordinates" begin
391+ m = GeometryBasics. mesh (Rect3f (0 ,0 ,0 ,1 ,1 ,1 ))
392+ m2 = GeometryBasics. map_coordinates (p -> 2 * p, m)
393+ @test m != = m2
394+ @test 2 * coordinates (m) == coordinates (m2)
395+
396+ m3 = GeometryBasics. map_coordinates! (p -> 0.5 * p, m2)
397+ @test m3 === m2
398+ @test coordinates (m) == coordinates (m3)
399+
400+ m = MetaMesh (GeometryBasics. mesh (Rect3f (0 ,0 ,0 ,1 ,1 ,1 )), meta = " test" )
401+ m2 = GeometryBasics. map_coordinates (p -> 2 * p, m)
402+ @test m != = m2
403+ @test 2 * coordinates (m) == coordinates (m2)
404+ @test GeometryBasics. meta (m) == GeometryBasics. meta (m2)
375405end
0 commit comments