|
1 | | -using Test, Random, StructArrays, Tables, StaticArrays |
| 1 | +using Test, Random, StructArrays, Tables, StaticArrays, OffsetArrays |
2 | 2 | using GeometryBasics |
3 | 3 | using LinearAlgebra |
4 | 4 | using GeometryBasics: attributes |
5 | 5 |
|
6 | 6 | @testset "GeometryBasics" begin |
7 | 7 |
|
| 8 | +@testset "algorithms" begin |
| 9 | + cube = Rect(Vec3f0(-0.5), Vec3f0(1)) |
| 10 | + cube_faces = decompose(TriangleFace{Int}, faces(cube)) |
| 11 | + cube_vertices = decompose(Point{3,Float32}, cube) |
| 12 | + @test area(cube_vertices, cube_faces) == 6 |
| 13 | + mesh = Mesh(cube_vertices, cube_faces) |
| 14 | + @test GeometryBasics.volume(mesh) ≈ 1 |
| 15 | + |
| 16 | + points_cwise = Point2f0[(0,0), (0,1), (1,1)] |
| 17 | + points_ccwise = Point2f0[(0,0), (1,0), (1,1)] |
| 18 | + @test area(points_cwise) ≈ -0.5 |
| 19 | + @test area(points_ccwise) ≈ 0.5 |
| 20 | + @test area(OffsetArray(points_cwise, -2)) ≈ -0.5 |
| 21 | + |
| 22 | + points3d = Point3f0[(0,0,0), (0,0,1), (0,1,1)] |
| 23 | + @test area(OffsetArray(points3d, -2)) ≈ 0.5 |
| 24 | + |
| 25 | + pm2d = [PointMeta(0.0, 0.0, a=:d), PointMeta(0.0, 1.0, a=:e), PointMeta(1.0, 0.0, a=:f)] |
| 26 | + @test area(pm2d) ≈ -0.5 |
| 27 | + |
| 28 | + pm3d = [PointMeta(0.0, 0.0, 0.0, a=:d), PointMeta(0.0, 1.0, 0.0, a=:e), PointMeta(1.0, 0.0, 0.0, a=:f)] |
| 29 | + @test_broken area(pm3d) ≈ 0.5 # Currently broken as zero(PointMeta(0.0, 0.0, 0.0, a=:d)) fails |
| 30 | +end |
| 31 | + |
8 | 32 | @testset "embedding metadata" begin |
9 | 33 | @testset "Meshes" begin |
10 | 34 |
|
@@ -84,13 +108,15 @@ using GeometryBasics: attributes |
84 | 108 | @testset "point with metadata" begin |
85 | 109 | p = Point(1.1, 2.2) |
86 | 110 | @test p isa AbstractVector{Float64} |
87 | | - pm = GeometryBasics.PointMeta(1.1, 2.2; a=1, b=2) |
| 111 | + pm = PointMeta(1.1, 2.2; a=1, b=2) |
88 | 112 | p1 = Point(2.2, 3.6) |
89 | 113 | p2 = [p, p1] |
90 | 114 | @test coordinates(p2) == p2 |
91 | 115 | @test meta(pm) === (a=1, b=2) |
92 | 116 | @test metafree(pm) === p |
93 | 117 | @test propertynames(pm) == (:position, :a, :b) |
| 118 | + @test GeometryBasics.MetaFree(typeof(pm)) == Point{2,Float64} |
| 119 | + @test_broken zero(pm) == [0, 0] |
94 | 120 | end |
95 | 121 |
|
96 | 122 | @testset "MultiPoint with metadata" begin |
|
0 commit comments