diff test/StaticDicts/StaticDicts_test.jl @ 746:ddb52db10f37 feature/static_dict

Merge in default
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 19 Mar 2021 13:41:25 +0100
parents test/testStaticDicts.jl@6377a5fba0a1
children ffb71bdb4486
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/StaticDicts/StaticDicts_test.jl	Fri Mar 19 13:41:25 2021 +0100
@@ -0,0 +1,69 @@
+using Test
+using Sbplib.StaticDicts
+
+@testset "StaticDicts" begin
+
+@testset "StaticDict" begin
+    @testset "constructor" begin
+        @test (StaticDict{Int,Int,N} where N) <: AbstractDict
+
+        d = StaticDict(1=>2, 3=>4)
+        @test d isa StaticDict{Int,Int}
+        @test d[1] == 2
+        @test d[3] == 4
+
+        @test StaticDict((1=>2, 3=>4)) == d
+
+        @test StaticDict() isa StaticDict
+        @test StaticDict{Int,String}() isa StaticDict{Int,String,0}
+
+        @test StaticDict(1=>3, 2=>4.) isa StaticDict{Int,Real}
+        @test StaticDict(1. =>3, 2=>4) isa StaticDict{Real,Int}
+        @test StaticDict(1. =>3, 2=>4.) isa StaticDict{Real,Real}
+
+        @test_throws DomainError StaticDict(1=>3, 1=>3)
+    end
+
+    @testset "length" begin
+        @test length(StaticDict()) == 0
+        @test length(StaticDict(1=>1)) == 1
+        @test length(StaticDict(1=>1, 2=>2)) == 2
+    end
+
+    @testset "equality" begin
+        @test StaticDict(1=>1) == StaticDict(1=>1)
+        @test StaticDict(2=>1) != StaticDict(1=>1)
+        @test StaticDict(1=>2) != StaticDict(1=>1)
+
+        # The following is not true for the regular Dict
+        @test StaticDict(1=>1) === StaticDict(1=>1)
+        @test StaticDict(2=>1) !== StaticDict(1=>1)
+        @test StaticDict(1=>2) !== StaticDict(1=>1)
+    end
+
+    @testset "get" begin
+        d = StaticDict(1=>2, 3=>4)
+
+        @test get(d,1,6) == 2
+        @test get(d,3,6) == 4
+        @test get(d,5,6) == 6
+    end
+
+    @testset "iterate" begin
+        pairs = [1=>2, 3=>4, 5=>6]
+
+        d = StaticDict(pairs...)
+        @test collect(d) == pairs
+    end
+
+    @testset "merge" begin
+        @test merge(
+            StaticDict(1=>3, 2=> 4),
+            StaticDict(3=>5,4=>6)) == StaticDict(
+                1=>3, 2=>4, 3=>5, 4=>6
+            )
+        @test_throws DomainError merge(StaticDict(1=>3),StaticDict(1=>3))
+    end
+end
+
+end