@@ -42,6 +42,23 @@ public function createCachedShouldCreateResolverWithCachedExecutor()
4242 $ this ->assertInstanceOf ('React\Dns\Query\CachedExecutor ' , $ this ->getResolverPrivateMemberValue ($ resolver , 'executor ' ));
4343 }
4444
45+ /** @test */
46+ public function createCachedShouldCreateResolverWithCachedExecutorWithCustomCache ()
47+ {
48+ $ cache = $ this ->getMock ('React\Cache\CacheInterface ' );
49+ $ loop = $ this ->getMock ('React\EventLoop\LoopInterface ' );
50+
51+ $ factory = new Factory ();
52+ $ resolver = $ factory ->createCached ('8.8.8.8:53 ' , $ loop , $ cache );
53+
54+ $ this ->assertInstanceOf ('React\Dns\Resolver\Resolver ' , $ resolver );
55+ $ executor = $ this ->getResolverPrivateMemberValue ($ resolver , 'executor ' );
56+ $ this ->assertInstanceOf ('React\Dns\Query\CachedExecutor ' , $ executor );
57+ $ recordCache = $ this ->getCachedExecutorPrivateMemberValue ($ executor , 'cache ' );
58+ $ this ->assertInstanceOf ('React\Cache\CacheInterface ' , $ this ->getRecordCachePrivateMemberValue ($ recordCache , 'cache ' ));
59+ $ this ->assertSame ($ cache , $ this ->getRecordCachePrivateMemberValue ($ recordCache , 'cache ' ));
60+ }
61+
4562 /**
4663 * @test
4764 * @dataProvider factoryShouldAddDefaultPortProvider
@@ -75,4 +92,18 @@ private function getResolverPrivateMemberValue($resolver, $field)
7592 $ reflector ->setAccessible (true );
7693 return $ reflector ->getValue ($ resolver );
7794 }
95+
96+ private function getCachedExecutorPrivateMemberValue ($ resolver , $ field )
97+ {
98+ $ reflector = new \ReflectionProperty ('React\Dns\Query\CachedExecutor ' , $ field );
99+ $ reflector ->setAccessible (true );
100+ return $ reflector ->getValue ($ resolver );
101+ }
102+
103+ private function getRecordCachePrivateMemberValue ($ resolver , $ field )
104+ {
105+ $ reflector = new \ReflectionProperty ('React\Dns\Query\RecordCache ' , $ field );
106+ $ reflector ->setAccessible (true );
107+ return $ reflector ->getValue ($ resolver );
108+ }
78109}
0 commit comments