@@ -36,10 +36,12 @@ defmodule RegistryTest do
3636 { :ok , pid } = Registry . register ( registry , "hello" , :value )
3737 assert is_pid ( pid )
3838 assert Registry . keys ( registry , self ( ) ) == [ "hello" ]
39+ assert Registry . values ( registry , "hello" , self ( ) ) == [ :value ]
3940
4041 assert { :error , { :already_registered , pid } } = Registry . register ( registry , "hello" , :value )
4142 assert pid == self ( )
4243 assert Registry . keys ( registry , self ( ) ) == [ "hello" ]
44+ assert Registry . values ( registry , "hello" , self ( ) ) == [ :value ]
4345
4446 { :ok , pid } = Registry . register ( registry , "world" , :value )
4547 assert is_pid ( pid )
@@ -49,11 +51,15 @@ defmodule RegistryTest do
4951 test "has unique registrations across processes" , % { registry: registry } do
5052 { _ , task } = register_task ( registry , "hello" , :value )
5153 Process . link ( Process . whereis ( registry ) )
54+ assert Registry . keys ( registry , task ) == [ "hello" ]
55+ assert Registry . values ( registry , "hello" , task ) == [ :value ]
5256
5357 assert { :error , { :already_registered , ^ task } } =
5458 Registry . register ( registry , "hello" , :recent )
5559
5660 assert Registry . keys ( registry , self ( ) ) == [ ]
61+ assert Registry . values ( registry , "hello" , self ( ) ) == [ ]
62+
5763 { :links , links } = Process . info ( self ( ) , :links )
5864 assert Process . whereis ( registry ) in links
5965 end
@@ -433,16 +439,30 @@ defmodule RegistryTest do
433439 { :ok , pid } = Registry . register ( registry , "hello" , :value )
434440 assert is_pid ( pid )
435441 assert Registry . keys ( registry , self ( ) ) == [ "hello" ]
442+ assert Registry . values ( registry , "hello" , self ( ) ) == [ :value ]
436443
437444 assert { :ok , pid } = Registry . register ( registry , "hello" , :value )
438445 assert is_pid ( pid )
439446 assert Registry . keys ( registry , self ( ) ) == [ "hello" , "hello" ]
447+ assert Registry . values ( registry , "hello" , self ( ) ) == [ :value , :value ]
440448
441449 { :ok , pid } = Registry . register ( registry , "world" , :value )
442450 assert is_pid ( pid )
443451 assert Registry . keys ( registry , self ( ) ) |> Enum . sort ( ) == [ "hello" , "hello" , "world" ]
444452 end
445453
454+ test "has duplicate registrations across processes" , % { registry: registry } do
455+ { _ , task } = register_task ( registry , "hello" , :world )
456+ assert Registry . keys ( registry , self ( ) ) == [ ]
457+ assert Registry . keys ( registry , task ) == [ "hello" ]
458+ assert Registry . values ( registry , "hello" , self ( ) ) == [ ]
459+ assert Registry . values ( registry , "hello" , task ) == [ :world ]
460+
461+ assert { :ok , _pid } = Registry . register ( registry , "hello" , :value )
462+ assert Registry . keys ( registry , self ( ) ) == [ "hello" ]
463+ assert Registry . values ( registry , "hello" , self ( ) ) == [ :value ]
464+ end
465+
446466 test "compares using matches" , % { registry: registry } do
447467 { :ok , _ } = Registry . register ( registry , 1.0 , :value )
448468 { :ok , _ } = Registry . register ( registry , 1 , :value )
0 commit comments