@@ -2,6 +2,10 @@ defmodule AtomicMapTest do
22 use ExUnit.Case
33 doctest AtomicMap
44
5+ defmodule MyStruct do
6+ defstruct first: nil , second: nil
7+ end
8+
59 test "works with maps" do
610 input = % { "a" => 2 , "b" => % { "c" => 4 } }
711 expected = % { a: 2 , b: % { c: 4 } }
@@ -38,6 +42,24 @@ defmodule AtomicMapTest do
3842 assert AtomicMap . convert ( input ) == expected
3943 end
4044
45+ test "works with structs" do
46+ input = % AtomicMapTest.MyStruct { first: [ % { "a" => 1 } ] }
47+ expected = % AtomicMapTest.MyStruct { first: [ % { a: 1 } ] }
48+ assert AtomicMap . convert ( input ) == expected
49+ end
50+
51+ test "works with nested structs" do
52+ input = % AtomicMapTest.MyStruct { first: [ % AtomicMapTest.MyStruct { first: % { "b" => 1 } } ] }
53+ expected = % AtomicMapTest.MyStruct { first: [ % AtomicMapTest.MyStruct { first: % { b: 1 } } ] }
54+ assert AtomicMap . convert ( input ) == expected
55+ end
56+
57+ test "works with tuples" do
58+ input = % { "first" => { 1 , 2 } }
59+ expected = % { first: { 1 , 2 } }
60+ assert AtomicMap . convert ( input ) == expected
61+ end
62+
4163 test "raises for not existing atoms" do
4264 assert_raise ArgumentError , fn ->
4365 input = % { "a" => 2 , "b" => % { "c" => 4 } , "__not___existing__" => 5 }
0 commit comments