@@ -547,97 +547,6 @@ test('getById', () => {
547547 assert . equal ( deep . getById ( 'entity-a' , agent ) , undefined ) ;
548548} ) ;
549549
550- test ( 'select type, type.type' , ( ) => {
551- const deep = new Deep ( ) ;
552- const prevAllSize = deep . memory . all . size ;
553- const A = deep . new ( ) ;
554- const B = deep . new ( ) ;
555- B . from = A ; B . to = A ;
556- const a = deep . new ( ) ; a . type = A ;
557- const b = deep . new ( ) ; b . type = B ;
558- b . from = a ; b . to = a ;
559- assert . equal ( A . type , deep ) ;
560- assert . equal ( A . from , undefined ) ;
561- assert . equal ( A . to , undefined ) ;
562- assert . equal ( A . value , undefined ) ;
563- assert . equal ( B . type , deep ) ;
564- assert . equal ( B . from , A ) ;
565- assert . equal ( B . to , A ) ;
566- assert . equal ( B . value , undefined ) ;
567- assert . equal ( a . type , A ) ;
568- assert . equal ( a . from , undefined ) ;
569- assert . equal ( a . to , undefined ) ;
570- assert . equal ( a . value , undefined ) ;
571- assert . equal ( b . type , B ) ;
572- assert . equal ( b . from , a ) ;
573- assert . equal ( b . to , a ) ;
574- assert . equal ( b . value , undefined ) ;
575- } ) ;
576-
577- test ( 'select from.type to.type' , ( ) => {
578- const deep = new Deep ( ) ;
579- const A = deep . new ( ) ;
580- const B = deep . new ( ) ;
581- B . from = A ; B . to = A ;
582- const C = deep . new ( ) ;
583- C . from = A ; C . to = B ;
584- assert . equal ( deep . contains . type . typed . size , 0 ) ;
585- assert . equal ( deep . contains . from . typed . size , 0 ) ;
586- assert . equal ( deep . contains . to . typed . size , 0 ) ;
587- const selection = deep . select ( { from : { type : A } , to : { type : B } } ) ;
588- assert . equal ( deep . contains . type . typed . size , 2 ) ;
589- assert . equal ( deep . contains . from . typed . size , 1 ) ;
590- assert . equal ( deep . contains . to . typed . size , 1 ) ;
591- let result = selection . call ( ) ;
592- let outerCounter = 0 ;
593- selection . on ( ( ) => {
594- outerCounter ++ ;
595- result = selection . call ( ) ;
596- } ) ;
597- const relations1 = selection . out ;
598- assert . equal ( relations1 . size , 2 ) ;
599- let innerRelationsCounter = 0 ;
600- relations1 . each ( r => r . on ( ( ) => {
601- innerRelationsCounter ++ ;
602- } ) )
603- assert . equal ( outerCounter , 0 ) ;
604- assert . equal ( innerRelationsCounter , 0 ) ;
605- assert . equal ( result . size , 0 ) ;
606- const a = A . new ( ) ;
607- assert . equal ( innerRelationsCounter , 2 ) ;
608- assert . equal ( outerCounter , 2 ) ;
609- assert . equal ( result . size , 0 ) ;
610- const b = B . new ( ) ;
611- assert . equal ( innerRelationsCounter , 4 ) ;
612- assert . equal ( outerCounter , 4 ) ;
613- assert . equal ( result . size , 0 ) ;
614- const c = C . new ( ) ;
615- assert . equal ( innerRelationsCounter , 4 ) ;
616- assert . equal ( result . size , 0 ) ;
617- c . from = a ;
618- assert . equal ( innerRelationsCounter , 5 ) ;
619- assert . equal ( result . size , 0 ) ;
620- c . to = b ;
621- assert . equal ( innerRelationsCounter , 6 ) ;
622- assert . equal ( result . size , 1 ) ;
623- assert . equal ( outerCounter , 7 ) ;
624- } ) ;
625-
626- test ( 'select result changes' , ( ) => {
627- const deep = new Deep ( ) ;
628- const A = deep . new ( ) ;
629- const B = deep . new ( ) ;
630- const b = B . new ( ) ;
631- const selection = deep . select ( { type : B } ) ;
632- assert . equal ( selection . to . size , 1 ) ;
633- let outerCounter = 0 ;
634- selection . on ( ( ) => {
635- outerCounter ++ ;
636- } ) ;
637- b . from = A ; b . to = A ;
638- assert . equal ( outerCounter , 2 ) ;
639- } ) ;
640-
641550test ( 'not operator' , ( ) => {
642551 const deep = new Deep ( ) ;
643552 const prevAllSize = deep . memory . all . size ;
@@ -820,41 +729,6 @@ test('association events order', () => {
820729 }
821730} ) ;
822731
823- test . skip ( 'benchmark' , async ( ) => {
824- const deep = new Deep ( ) ;
825- const { Benchmark, Benchmarked } = benchmarks ( deep ) ;
826-
827- // Function that creates new Deep instances
828- const testFn = ( ) => {
829- const d = deep . new ( ) ;
830- const d2 = deep . new ( ) ;
831- d . from = d2 ;
832- return d ;
833- } ;
834-
835- // Run benchmark
836- const benchmarked = await Benchmark . call ( testFn ) ;
837-
838- // Check that result is a Deep instance
839- assert ( benchmarked . typeof ( Benchmarked ) ) ;
840-
841- // Check that from contains the test function
842- assert ( deep . isDeep ( benchmarked . from ) ) ;
843- assert . equal ( benchmarked . from . value , testFn ) ;
844-
845- // Check that to contains benchmark results
846- assert ( deep . isDeep ( benchmarked . to ) ) ;
847- const result = benchmarked . to . value ;
848- assert ( result . target ) ;
849- assert ( typeof result . hz === 'number' ) ;
850- assert ( result . stats ) ;
851- assert ( result . times ) ;
852-
853- // Check that value contains hz
854- assert ( typeof benchmarked . call , 'number' ) ;
855- assert . equal ( benchmarked . value , result . hz ) ;
856- } ) ;
857-
858732test ( 'inof and outof with multiple types' , ( ) => {
859733 const deep = new Deep ( ) ;
860734
@@ -985,3 +859,25 @@ test('collection getters (types, froms, tos, typeds, outs, ins)', () => {
985859 }
986860 }
987861} ) ;
862+
863+ test ( 'go method' , ( ) => {
864+ const deep = new Deep ( ) ;
865+
866+ // Создаем тестовую структуру
867+ const a = deep . new ( ) ;
868+ deep . contains . a = a ;
869+ const b = deep . new ( ) ;
870+ a . contains . b = b ;
871+ const c = deep . new ( ) ;
872+ b . contains . c = c ;
873+
874+ // Проверяем успешный поиск
875+ assert . equal ( deep . go ( 'a' , 'b' , 'c' ) , c ) ;
876+ assert . equal ( deep . go ( 'a' , 'b' ) , b ) ;
877+ assert . equal ( deep . go ( 'a' ) , a ) ;
878+
879+ // Проверяем неуспешный поиск
880+ assert . equal ( deep . go ( 'x' ) , undefined ) ;
881+ assert . equal ( deep . go ( 'a' , 'x' ) , undefined ) ;
882+ assert . equal ( deep . go ( 'a' , 'b' , 'x' ) , undefined ) ;
883+ } ) ;
0 commit comments