@@ -492,28 +492,6 @@ void main() {
492
492
expect (world.valueAsString, 'world' );
493
493
});
494
494
495
- test ('Strings with offset' , () async {
496
- var worldRef = await service.evaluate (
497
- isolate.id, bootstrap.id, "helloString('world')" ) as InstanceRef ;
498
- var world = await service.getObject (isolate.id, worldRef.id,
499
- count: 2 , offset: 1 ) as Instance ;
500
- expect (world.valueAsString, 'or' );
501
- expect (world.count, 2 );
502
- expect (world.length, 5 );
503
- expect (world.offset, 1 );
504
- });
505
-
506
- test ('Strings with offset off the end' , () async {
507
- var worldRef = await service.evaluate (
508
- isolate.id, bootstrap.id, "helloString('world')" ) as InstanceRef ;
509
- var world = await service.getObject (isolate.id, worldRef.id,
510
- count: 5 , offset: 3 ) as Instance ;
511
- expect (world.valueAsString, 'ld' );
512
- expect (world.count, 2 );
513
- expect (world.length, 5 );
514
- expect (world.offset, 3 );
515
- });
516
-
517
495
test ('Large strings not truncated' , () async {
518
496
var largeString = await service.evaluate (
519
497
isolate.id, bootstrap.id, "helloString('${'abcde' * 250 }')" )
@@ -564,30 +542,6 @@ void main() {
564
542
expect (sixth.valueAsString, '5' );
565
543
});
566
544
567
- test ('Lists with count/offset' , () async {
568
- var list = await createList ();
569
- var inst = await service.getObject (isolate.id, list.objectId,
570
- count: 7 , offset: 4 ) as Instance ;
571
- expect (inst.length, 1001 );
572
- expect (inst.offset, 4 );
573
- expect (inst.count, 7 );
574
- var fifth = inst.elements[0 ] as InstanceRef ;
575
- expect (fifth.valueAsString, '100' );
576
- var sixth = inst.elements[1 ] as InstanceRef ;
577
- expect (sixth.valueAsString, '5' );
578
- });
579
-
580
- test ('Lists running off the end' , () async {
581
- var list = await createList ();
582
- var inst = await service.getObject (isolate.id, list.objectId,
583
- count: 5 , offset: 1000 ) as Instance ;
584
- expect (inst.length, 1001 );
585
- expect (inst.offset, 1000 );
586
- expect (inst.count, 1 );
587
- var only = inst.elements[0 ] as InstanceRef ;
588
- expect (only.valueAsString, '5' );
589
- });
590
-
591
545
test ('Maps' , () async {
592
546
var map = await createMap ();
593
547
var inst =
@@ -603,33 +557,6 @@ void main() {
603
557
expect (sixth.value.valueAsString, '995' );
604
558
});
605
559
606
- test ('Maps with count/offset' , () async {
607
- var map = await createMap ();
608
- var inst = await service.getObject (isolate.id, map.objectId,
609
- count: 7 , offset: 4 ) as Instance ;
610
- expect (inst.length, 1001 );
611
- expect (inst.offset, 4 );
612
- expect (inst.count, 7 );
613
- var fifth = inst.associations[0 ];
614
- expect (fifth.key.valueAsString, '4' );
615
- expect (fifth.value.valueAsString, '996' );
616
- var sixth = inst.associations[1 ];
617
- expect (sixth.key.valueAsString, '5' );
618
- expect (sixth.value.valueAsString, '995' );
619
- });
620
-
621
- test ('Maps running off the end' , () async {
622
- var map = await createMap ();
623
- var inst = await service.getObject (isolate.id, map.objectId,
624
- count: 5 , offset: 1000 ) as Instance ;
625
- expect (inst.length, 1001 );
626
- expect (inst.offset, 1000 );
627
- expect (inst.count, 1 );
628
- var only = inst.associations[0 ];
629
- expect (only.key.valueAsString, '1000' );
630
- expect (only.value.valueAsString, '0' );
631
- });
632
-
633
560
test ('bool' , () async {
634
561
var ref = await service.evaluate (
635
562
isolate.id, bootstrap.id, 'helloBool(true)' ) as InstanceRef ;
@@ -671,6 +598,190 @@ void main() {
671
598
expect (script.tokenPosTable, isNotEmpty);
672
599
}
673
600
});
601
+
602
+ group ('getObject called with offset/count parameters' , () {
603
+ test ('Lists with offset/count are truncated' , () async {
604
+ var list = await createList ();
605
+ var inst = await service.getObject (
606
+ isolate.id,
607
+ list.objectId,
608
+ count: 7 ,
609
+ offset: 4 ,
610
+ ) as Instance ;
611
+ expect (inst.length, 1001 );
612
+ expect (inst.offset, 4 );
613
+ expect (inst.count, 7 );
614
+ var fifth = inst.elements[0 ] as InstanceRef ;
615
+ expect (fifth.valueAsString, '100' );
616
+ var sixth = inst.elements[1 ] as InstanceRef ;
617
+ expect (sixth.valueAsString, '5' );
618
+ });
619
+
620
+ test ('Lists are truncated to the end if offset/count runs off the end' ,
621
+ () async {
622
+ var list = await createList ();
623
+ var inst = await service.getObject (
624
+ isolate.id,
625
+ list.objectId,
626
+ count: 5 ,
627
+ offset: 1000 ,
628
+ ) as Instance ;
629
+ expect (inst.length, 1001 );
630
+ expect (inst.offset, 1000 );
631
+ expect (inst.count, 1 );
632
+ var only = inst.elements[0 ] as InstanceRef ;
633
+ expect (only.valueAsString, '5' );
634
+ });
635
+
636
+ test ('Maps with offset/count are truncated' , () async {
637
+ var map = await createMap ();
638
+ var inst = await service.getObject (
639
+ isolate.id,
640
+ map.objectId,
641
+ count: 7 ,
642
+ offset: 4 ,
643
+ ) as Instance ;
644
+ expect (inst.length, 1001 );
645
+ expect (inst.offset, 4 );
646
+ expect (inst.count, 7 );
647
+ var fifth = inst.associations[0 ];
648
+ expect (fifth.key.valueAsString, '4' );
649
+ expect (fifth.value.valueAsString, '996' );
650
+ var sixth = inst.associations[1 ];
651
+ expect (sixth.key.valueAsString, '5' );
652
+ expect (sixth.value.valueAsString, '995' );
653
+ });
654
+
655
+ test ('Maps are truncated to the end if offset/count runs off the end' ,
656
+ () async {
657
+ var map = await createMap ();
658
+ var inst = await service.getObject (
659
+ isolate.id,
660
+ map.objectId,
661
+ count: 5 ,
662
+ offset: 1000 ,
663
+ ) as Instance ;
664
+ expect (inst.length, 1001 );
665
+ expect (inst.offset, 1000 );
666
+ expect (inst.count, 1 );
667
+ var only = inst.associations[0 ];
668
+ expect (only.key.valueAsString, '1000' );
669
+ expect (only.value.valueAsString, '0' );
670
+ });
671
+
672
+ test ('Strings with offset/count are truncated' , () async {
673
+ var worldRef = await service.evaluate (
674
+ isolate.id, bootstrap.id, "helloString('world')" ) as InstanceRef ;
675
+ var world = await service.getObject (
676
+ isolate.id,
677
+ worldRef.id,
678
+ count: 2 ,
679
+ offset: 1 ,
680
+ ) as Instance ;
681
+ expect (world.valueAsString, 'or' );
682
+ expect (world.count, 2 );
683
+ expect (world.length, 5 );
684
+ expect (world.offset, 1 );
685
+ });
686
+
687
+ test (
688
+ 'Strings are truncated to the end if offset/count runs off the end' ,
689
+ () async {
690
+ var worldRef = await service.evaluate (
691
+ isolate.id, bootstrap.id, "helloString('world')" ) as InstanceRef ;
692
+ var world = await service.getObject (
693
+ isolate.id,
694
+ worldRef.id,
695
+ count: 5 ,
696
+ offset: 3 ,
697
+ ) as Instance ;
698
+ expect (world.valueAsString, 'ld' );
699
+ expect (world.count, 2 );
700
+ expect (world.length, 5 );
701
+ expect (world.offset, 3 );
702
+ });
703
+
704
+ test ('offset/count parameters are ignored for Classes' , () async {
705
+ var testClass = await service.getObject (
706
+ isolate.id,
707
+ rootLibrary.classes.first.id,
708
+ offset: 100 ,
709
+ count: 100 ,
710
+ ) as Class ;
711
+ expect (
712
+ testClass.functions,
713
+ unorderedEquals ([
714
+ predicate ((FuncRef f) => f.name == 'message' && ! f.isStatic),
715
+ predicate ((FuncRef f) => f.name == 'notFinal' && ! f.isStatic),
716
+ predicate ((FuncRef f) => f.name == 'hello' && ! f.isStatic),
717
+ predicate ((FuncRef f) => f.name == '_equals' && ! f.isStatic),
718
+ predicate ((FuncRef f) => f.name == 'hashCode' && ! f.isStatic),
719
+ predicate ((FuncRef f) => f.name == 'toString' && ! f.isStatic),
720
+ predicate (
721
+ (FuncRef f) => f.name == 'noSuchMethod' && ! f.isStatic),
722
+ predicate (
723
+ (FuncRef f) => f.name == 'runtimeType' && ! f.isStatic),
724
+ ]));
725
+ expect (
726
+ testClass.fields,
727
+ unorderedEquals ([
728
+ predicate ((FieldRef f) =>
729
+ f.name == 'message' &&
730
+ f.declaredType != null &&
731
+ ! f.isStatic &&
732
+ ! f.isConst &&
733
+ f.isFinal),
734
+ predicate ((FieldRef f) =>
735
+ f.name == 'notFinal' &&
736
+ f.declaredType != null &&
737
+ ! f.isStatic &&
738
+ ! f.isConst &&
739
+ ! f.isFinal),
740
+ ]));
741
+ });
742
+
743
+ test ('offset/count parameters are ignored for bools' , () async {
744
+ var ref = await service.evaluate (
745
+ isolate.id, bootstrap.id, 'helloBool(true)' ) as InstanceRef ;
746
+ var obj = await service.getObject (
747
+ isolate.id,
748
+ ref.id,
749
+ offset: 100 ,
750
+ count: 100 ,
751
+ ) as Instance ;
752
+ expect (obj.kind, InstanceKind .kBool);
753
+ expect (obj.classRef.name, 'Bool' );
754
+ expect (obj.valueAsString, 'true' );
755
+ });
756
+
757
+ test ('offset/count parameters are ignored for nums' , () async {
758
+ var ref = await service.evaluate (
759
+ isolate.id, bootstrap.id, 'helloNum(42)' ) as InstanceRef ;
760
+ var obj = await service.getObject (
761
+ isolate.id,
762
+ ref.id,
763
+ offset: 100 ,
764
+ count: 100 ,
765
+ ) as Instance ;
766
+ expect (obj.kind, InstanceKind .kDouble);
767
+ expect (obj.classRef.name, 'Double' );
768
+ expect (obj.valueAsString, '42' );
769
+ });
770
+
771
+ test ('offset/count parameters are ignored for null' , () async {
772
+ var ref = await service.evaluate (
773
+ isolate.id, bootstrap.id, 'helloNum(null)' ) as InstanceRef ;
774
+ var obj = await service.getObject (
775
+ isolate.id,
776
+ ref.id,
777
+ offset: 100 ,
778
+ count: 100 ,
779
+ ) as Instance ;
780
+ expect (obj.kind, InstanceKind .kNull);
781
+ expect (obj.classRef.name, 'Null' );
782
+ expect (obj.valueAsString, 'null' );
783
+ });
784
+ });
674
785
});
675
786
676
787
test ('getScripts' , () async {
0 commit comments