@testset "Angles" begin
  # 2D points
  @test ∠(P2(0,1),P2(0,0),P2(1,0)) ≈ T(-π/2)
  @test ∠(P2(1,0),P2(0,0),P2(0,1)) ≈ T(π/2)
  @test ∠(P2(-1,0),P2(0,0),P2(0,1)) ≈ T(-π/2)
  @test ∠(P2(0,1),P2(0,0),P2(-1,0)) ≈ T(π/2)
  @test ∠(P2(0,-1),P2(0,0),P2(1,0)) ≈ T(π/2)
  @test ∠(P2(1,0),P2(0,0),P2(0,-1)) ≈ T(-π/2)
  @test ∠(P2(0,-1),P2(0,0),P2(-1,0)) ≈ T(-π/2)
  @test ∠(P2(-1,0),P2(0,0),P2(0,-1)) ≈ T(π/2)

  # 3D points
  @test ∠(P3(1,0,0),P3(0,0,0),P3(0,1,0)) ≈ T(π/2)
  @test ∠(P3(1,0,0),P3(0,0,0),P3(0,0,1)) ≈ T(π/2)
  @test ∠(P3(0,1,0),P3(0,0,0),P3(1,0,0)) ≈ T(π/2)
  @test ∠(P3(0,1,0),P3(0,0,0),P3(0,0,1)) ≈ T(π/2)
  @test ∠(P3(0,0,1),P3(0,0,0),P3(1,0,0)) ≈ T(π/2)
  @test ∠(P3(0,0,1),P3(0,0,0),P3(0,1,0)) ≈ T(π/2)

  # 2D vectors
  @test ∠(V2(1, 0), V2(0, 1)) ≈ T(π / 2)
  @test ∠(V2(1, 0), V2(0, -1)) ≈ T(-π / 2)
  @test ∠(V2(1, 0), V2(-1, 0)) ≈ T(π)
  @test ∠(V2(0, 1), V2(-1, 0)) ≈ T(π / 2)
  @test ∠(V2(0, 1), V2(0, -1)) ≈ T(-π)
  @test ∠(V2(0, 1), V2(1, 1)) ≈ T(-π / 4)
  @test ∠(V2(0, -1), V2(1, 1)) ≈ T(π * 3 / 4)
  @test ∠(V2(-1, -1), V2(1, 1)) ≈ T(π)

  # 3D vectors
  @test ∠(V3(0, 0, 1), V3(1, 1, 0)) ≈ T(π / 2)
  @test ∠(V3(1, 0, 1), V3(1, 1, 0)) ≈ T(π / 3)
  @test ∠(V3(-1, -1, 0), V3(1, 1, 0)) ≈ T(π)
  @test ∠(V3(0, -1, -1), V3(0, 1, 1)) ≈ T(π)
  @test ∠(V3(0, -1, -1), V3(0, 1, 0)) ≈ T(π * 3 / 4)
  @test ∠(V3(0, 1, 1), V3(1, 1, 0)) ≈ T(π / 3)
end
