Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: runtime/vm/isolate_reload_test.cc

Issue 2011543002: Canonicalize uris in C++ instead of Dart for the standalone embedder. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fixz release build Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/unit_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_tools_api.h" 6 #include "include/dart_tools_api.h"
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "vm/globals.h" 8 #include "vm/globals.h"
9 #include "vm/isolate.h" 9 #include "vm/isolate.h"
10 #include "vm/lockers.h" 10 #include "vm/lockers.h"
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 EXPECT_STREQ("(a is A(true)/ B(false)/ C(false)/ X(true)," 641 EXPECT_STREQ("(a is A(true)/ B(false)/ C(false)/ X(true),"
642 " b is A(false)/ B(true)/ C(false)/ X(true)," 642 " b is A(false)/ B(true)/ C(false)/ X(true),"
643 " c is A(true)/ B(false)/ C(true)/ X(true)," 643 " c is A(true)/ B(false)/ C(true)/ X(true),"
644 " x is A(false)/ B(false)/ C(false)/ X(true))", 644 " x is A(false)/ B(false)/ C(false)/ X(true))",
645 SimpleInvokeStr(lib, "main")); 645 SimpleInvokeStr(lib, "main"));
646 } 646 }
647 647
648 648
649 TEST_CASE(IsolateReload_LiveStack) { 649 TEST_CASE(IsolateReload_LiveStack) {
650 const char* kScript = 650 const char* kScript =
651 "import 'isolate_reload_test_helper';\n" 651 "import 'test:isolate_reload_helper';\n"
652 "helper() => 7;\n" 652 "helper() => 7;\n"
653 "alpha() { var x = helper(); reloadTest(); return x + helper(); }\n" 653 "alpha() { var x = helper(); reloadTest(); return x + helper(); }\n"
654 "foo() => alpha();\n" 654 "foo() => alpha();\n"
655 "bar() => foo();\n" 655 "bar() => foo();\n"
656 "main() {\n" 656 "main() {\n"
657 " return bar();\n" 657 " return bar();\n"
658 "}\n"; 658 "}\n";
659 659
660 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 660 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
661 EXPECT_VALID(lib); 661 EXPECT_VALID(lib);
662 662
663 const char* kReloadScript = 663 const char* kReloadScript =
664 "import 'isolate_reload_test_helper';\n" 664 "import 'test:isolate_reload_helper';\n"
665 "helper() => 100;\n" 665 "helper() => 100;\n"
666 "alpha() => 5 + helper();\n" 666 "alpha() => 5 + helper();\n"
667 "foo() => alpha();\n" 667 "foo() => alpha();\n"
668 "bar() => foo();\n" 668 "bar() => foo();\n"
669 "main() {\n" 669 "main() {\n"
670 " return bar();\n" 670 " return bar();\n"
671 "}\n"; 671 "}\n";
672 672
673 TestCase::SetReloadTestScript(kReloadScript); 673 TestCase::SetReloadTestScript(kReloadScript);
674 674
(...skipping 12 matching lines...) Expand all
687 " return importedFunc();\n" 687 " return importedFunc();\n"
688 "}\n"; 688 "}\n";
689 689
690 Dart_Handle result; 690 Dart_Handle result;
691 691
692 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 692 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
693 EXPECT_VALID(lib); 693 EXPECT_VALID(lib);
694 694
695 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc"); 695 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc");
696 696
697 // Fail to find 'importable_test_lib' in the isolate. 697 // Fail to find 'test:importable_lib' in the isolate.
698 result = Dart_LookupLibrary(NewString("importable_test_lib")); 698 result = Dart_LookupLibrary(NewString("test:importable_lib"));
699 EXPECT(Dart_IsError(result)); 699 EXPECT(Dart_IsError(result));
700 700
701 const char* kReloadScript = 701 const char* kReloadScript =
702 "import 'importable_test_lib';\n" 702 "import 'test:importable_lib';\n"
703 "main() {\n" 703 "main() {\n"
704 " return importedFunc();\n" 704 " return importedFunc();\n"
705 "}\n"; 705 "}\n";
706 706
707 // Reload and add 'importable_test_lib' to isolate. 707 // Reload and add 'test:importable_lib' to isolate.
708 lib = TestCase::ReloadTestScript(kReloadScript); 708 lib = TestCase::ReloadTestScript(kReloadScript);
709 EXPECT_VALID(lib); 709 EXPECT_VALID(lib);
710 710
711 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main")); 711 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main"));
712 712
713 // Find 'importable_test_lib' in the isolate. 713 // Find 'test:importable_lib' in the isolate.
714 result = Dart_LookupLibrary(NewString("importable_test_lib")); 714 result = Dart_LookupLibrary(NewString("test:importable_lib"));
715 EXPECT(Dart_IsLibrary(result)); 715 EXPECT(Dart_IsLibrary(result));
716 716
717 // Reload and remove 'dart:math' from isolate. 717 // Reload and remove 'dart:math' from isolate.
718 lib = TestCase::ReloadTestScript(kScript); 718 lib = TestCase::ReloadTestScript(kScript);
719 EXPECT_VALID(lib); 719 EXPECT_VALID(lib);
720 720
721 // Fail to find 'importable_test_lib' in the isolate. 721 // Fail to find 'test:importable_lib' in the isolate.
722 result = Dart_LookupLibrary(NewString("importable_test_lib")); 722 result = Dart_LookupLibrary(NewString("test:importable_lib"));
723 EXPECT(Dart_IsError(result)); 723 EXPECT(Dart_IsError(result));
724 } 724 }
725 725
726 726
727 TEST_CASE(IsolateReload_LibraryHide) { 727 TEST_CASE(IsolateReload_LibraryHide) {
728 // Import 'importable_test_lib' with importedFunc hidden. Will result in an 728 // Import 'test:importable_lib' with importedFunc hidden. Will result in an
729 // error. 729 // error.
730 const char* kScript = 730 const char* kScript =
731 "import 'importable_test_lib' hide importedFunc;\n" 731 "import 'test:importable_lib' hide importedFunc;\n"
732 "main() {\n" 732 "main() {\n"
733 " return importedFunc();\n" 733 " return importedFunc();\n"
734 "}\n"; 734 "}\n";
735 735
736 // Dart_Handle result; 736 // Dart_Handle result;
737 737
738 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 738 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
739 EXPECT_VALID(lib); 739 EXPECT_VALID(lib);
740 740
741 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc"); 741 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc");
742 742
743 // Import 'importable_test_lib'. 743 // Import 'test:importable_lib'.
744 const char* kReloadScript = 744 const char* kReloadScript =
745 "import 'importable_test_lib';\n" 745 "import 'test:importable_lib';\n"
746 "main() {\n" 746 "main() {\n"
747 " return importedFunc();\n" 747 " return importedFunc();\n"
748 "}\n"; 748 "}\n";
749 749
750 lib = TestCase::ReloadTestScript(kReloadScript); 750 lib = TestCase::ReloadTestScript(kReloadScript);
751 EXPECT_VALID(lib); 751 EXPECT_VALID(lib);
752 752
753 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main")); 753 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main"));
754 } 754 }
755 755
756 756
757 TEST_CASE(IsolateReload_LibraryShow) { 757 TEST_CASE(IsolateReload_LibraryShow) {
758 // Import 'importable_test_lib' with importedIntFunc visible. Will result in 758 // Import 'test:importable_lib' with importedIntFunc visible. Will result in
759 // an error when 'main' is invoked. 759 // an error when 'main' is invoked.
760 const char* kScript = 760 const char* kScript =
761 "import 'importable_test_lib' show importedIntFunc;\n" 761 "import 'test:importable_lib' show importedIntFunc;\n"
762 "main() {\n" 762 "main() {\n"
763 " return importedFunc();\n" 763 " return importedFunc();\n"
764 "}\n" 764 "}\n"
765 "mainInt() {\n" 765 "mainInt() {\n"
766 " return importedIntFunc();\n" 766 " return importedIntFunc();\n"
767 "}\n"; 767 "}\n";
768 768
769 769
770 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 770 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
771 EXPECT_VALID(lib); 771 EXPECT_VALID(lib);
772 772
773 // Works. 773 // Works.
774 EXPECT_EQ(4, SimpleInvoke(lib, "mainInt")); 774 EXPECT_EQ(4, SimpleInvoke(lib, "mainInt"));
775 // Results in an error. 775 // Results in an error.
776 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc"); 776 EXPECT_ERROR(SimpleInvokeError(lib, "main"), "importedFunc");
777 777
778 // Import 'importable_test_lib' with importedFunc visible. Will result in 778 // Import 'test:importable_lib' with importedFunc visible. Will result in
779 // an error when 'mainInt' is invoked. 779 // an error when 'mainInt' is invoked.
780 const char* kReloadScript = 780 const char* kReloadScript =
781 "import 'importable_test_lib' show importedFunc;\n" 781 "import 'test:importable_lib' show importedFunc;\n"
782 "main() {\n" 782 "main() {\n"
783 " return importedFunc();\n" 783 " return importedFunc();\n"
784 "}\n" 784 "}\n"
785 "mainInt() {\n" 785 "mainInt() {\n"
786 " return importedIntFunc();\n" 786 " return importedIntFunc();\n"
787 "}\n"; 787 "}\n";
788 788
789 lib = TestCase::ReloadTestScript(kReloadScript); 789 lib = TestCase::ReloadTestScript(kReloadScript);
790 EXPECT_VALID(lib); 790 EXPECT_VALID(lib);
791 791
792 // Works. 792 // Works.
793 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main")); 793 EXPECT_STREQ("a", SimpleInvokeStr(lib, "main"));
794 // Results in an error. 794 // Results in an error.
795 EXPECT_ERROR(SimpleInvokeError(lib, "mainInt"), "importedIntFunc"); 795 EXPECT_ERROR(SimpleInvokeError(lib, "mainInt"), "importedIntFunc");
796 } 796 }
797 797
798 798
799 // Verifies that we clear the ICs for the functions live on the stack in a way 799 // Verifies that we clear the ICs for the functions live on the stack in a way
800 // that is compatible with the fast path smi stubs. 800 // that is compatible with the fast path smi stubs.
801 TEST_CASE(IsolateReload_SmiFastPathStubs) { 801 TEST_CASE(IsolateReload_SmiFastPathStubs) {
802 const char* kScript = 802 const char* kScript =
803 "import 'isolate_reload_test_helper';\n" 803 "import 'test:isolate_reload_helper';\n"
804 "import 'importable_test_lib' show importedIntFunc;\n" 804 "import 'test:importable_lib' show importedIntFunc;\n"
805 "main() {\n" 805 "main() {\n"
806 " var x = importedIntFunc();\n" 806 " var x = importedIntFunc();\n"
807 " var y = importedIntFunc();\n" 807 " var y = importedIntFunc();\n"
808 " reloadTest();\n" 808 " reloadTest();\n"
809 " return x + y;\n" 809 " return x + y;\n"
810 "}\n"; 810 "}\n";
811 811
812 812
813 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 813 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
814 EXPECT_VALID(lib); 814 EXPECT_VALID(lib);
815 815
816 // Identity reload. 816 // Identity reload.
817 TestCase::SetReloadTestScript(kScript); 817 TestCase::SetReloadTestScript(kScript);
818 818
819 EXPECT_EQ(8, SimpleInvoke(lib, "main")); 819 EXPECT_EQ(8, SimpleInvoke(lib, "main"));
820 } 820 }
821 821
822 822
823 // Verifies that we assign the correct patch classes for imported 823 // Verifies that we assign the correct patch classes for imported
824 // mixins when we reload. 824 // mixins when we reload.
825 TEST_CASE(IsolateReload_ImportedMixinFunction) { 825 TEST_CASE(IsolateReload_ImportedMixinFunction) {
826 const char* kScript = 826 const char* kScript =
827 "import 'importable_test_lib' show ImportedMixin;\n" 827 "import 'test:importable_lib' show ImportedMixin;\n"
828 "class A extends Object with ImportedMixin {\n" 828 "class A extends Object with ImportedMixin {\n"
829 "}" 829 "}"
830 "var func = new A().mixinFunc;\n" 830 "var func = new A().mixinFunc;\n"
831 "main() {\n" 831 "main() {\n"
832 " return func();\n" 832 " return func();\n"
833 "}\n"; 833 "}\n";
834 834
835 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 835 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
836 EXPECT_VALID(lib); 836 EXPECT_VALID(lib);
837 837
838 EXPECT_STREQ("mixin", SimpleInvokeStr(lib, "main")); 838 EXPECT_STREQ("mixin", SimpleInvokeStr(lib, "main"));
839 839
840 const char* kReloadScript = 840 const char* kReloadScript =
841 "import 'importable_test_lib' show ImportedMixin;\n" 841 "import 'test:importable_lib' show ImportedMixin;\n"
842 "class A extends Object with ImportedMixin {\n" 842 "class A extends Object with ImportedMixin {\n"
843 "}" 843 "}"
844 "var func;\n" 844 "var func;\n"
845 "main() {\n" 845 "main() {\n"
846 " return func();\n" 846 " return func();\n"
847 "}\n"; 847 "}\n";
848 848
849 lib = TestCase::ReloadTestScript(kReloadScript); 849 lib = TestCase::ReloadTestScript(kReloadScript);
850 EXPECT_VALID(lib); 850 EXPECT_VALID(lib);
851 851
(...skipping 18 matching lines...) Expand all
870 " return 4;\n" 870 " return 4;\n"
871 "}\n"; 871 "}\n";
872 872
873 lib = TestCase::ReloadTestScript(kReloadScript); 873 lib = TestCase::ReloadTestScript(kReloadScript);
874 EXPECT_ERROR(lib, "unexpected token"); 874 EXPECT_ERROR(lib, "unexpected token");
875 } 875 }
876 876
877 877
878 TEST_CASE(IsolateReload_PendingUnqualifiedCall_StaticToInstance) { 878 TEST_CASE(IsolateReload_PendingUnqualifiedCall_StaticToInstance) {
879 const char* kScript = 879 const char* kScript =
880 "import 'isolate_reload_test_helper';\n" 880 "import 'test:isolate_reload_helper';\n"
881 "class C {\n" 881 "class C {\n"
882 " static foo() => 'static';\n" 882 " static foo() => 'static';\n"
883 " test() {\n" 883 " test() {\n"
884 " reloadTest();\n" 884 " reloadTest();\n"
885 " return foo();\n" 885 " return foo();\n"
886 " }\n" 886 " }\n"
887 "}\n" 887 "}\n"
888 "main() {\n" 888 "main() {\n"
889 " return new C().test();\n" 889 " return new C().test();\n"
890 "}\n"; 890 "}\n";
891 891
892 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 892 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
893 EXPECT_VALID(lib); 893 EXPECT_VALID(lib);
894 894
895 const char* kReloadScript = 895 const char* kReloadScript =
896 "import 'isolate_reload_test_helper';\n" 896 "import 'test:isolate_reload_helper';\n"
897 "class C {\n" 897 "class C {\n"
898 " foo() => 'instance';\n" 898 " foo() => 'instance';\n"
899 " test() {\n" 899 " test() {\n"
900 " reloadTest();\n" 900 " reloadTest();\n"
901 " return foo();\n" 901 " return foo();\n"
902 " }\n" 902 " }\n"
903 "}\n" 903 "}\n"
904 "main() {\n" 904 "main() {\n"
905 " return new C().test();\n" 905 " return new C().test();\n"
906 "}\n"; 906 "}\n";
907 907
908 TestCase::SetReloadTestScript(kReloadScript); 908 TestCase::SetReloadTestScript(kReloadScript);
909 909
910 EXPECT_EQ("instance", SimpleInvokeStr(lib, "main")); 910 EXPECT_EQ("instance", SimpleInvokeStr(lib, "main"));
911 911
912 lib = TestCase::GetReloadErrorOrRootLibrary(); 912 lib = TestCase::GetReloadErrorOrRootLibrary();
913 EXPECT_VALID(lib); 913 EXPECT_VALID(lib);
914 914
915 EXPECT_EQ("instance", SimpleInvokeStr(lib, "main")); 915 EXPECT_EQ("instance", SimpleInvokeStr(lib, "main"));
916 } 916 }
917 917
918 918
919 TEST_CASE(IsolateReload_PendingUnqualifiedCall_InstanceToStatic) { 919 TEST_CASE(IsolateReload_PendingUnqualifiedCall_InstanceToStatic) {
920 const char* kScript = 920 const char* kScript =
921 "import 'isolate_reload_test_helper';\n" 921 "import 'test:isolate_reload_helper';\n"
922 "class C {\n" 922 "class C {\n"
923 " foo() => 'instance';\n" 923 " foo() => 'instance';\n"
924 " test() {\n" 924 " test() {\n"
925 " reloadTest();\n" 925 " reloadTest();\n"
926 " return foo();\n" 926 " return foo();\n"
927 " }\n" 927 " }\n"
928 "}\n" 928 "}\n"
929 "main() {\n" 929 "main() {\n"
930 " return new C().test();\n" 930 " return new C().test();\n"
931 "}\n"; 931 "}\n";
932 932
933 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 933 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
934 EXPECT_VALID(lib); 934 EXPECT_VALID(lib);
935 935
936 const char* kReloadScript = 936 const char* kReloadScript =
937 "import 'isolate_reload_test_helper';\n" 937 "import 'test:isolate_reload_helper';\n"
938 "class C {\n" 938 "class C {\n"
939 " static foo() => 'static';\n" 939 " static foo() => 'static';\n"
940 " test() {\n" 940 " test() {\n"
941 " reloadTest();\n" 941 " reloadTest();\n"
942 " return foo();\n" 942 " return foo();\n"
943 " }\n" 943 " }\n"
944 "}\n" 944 "}\n"
945 "main() {\n" 945 "main() {\n"
946 " return new C().test();\n" 946 " return new C().test();\n"
947 "}\n"; 947 "}\n";
948 948
949 TestCase::SetReloadTestScript(kReloadScript); 949 TestCase::SetReloadTestScript(kReloadScript);
950 950
951 EXPECT_EQ("static", SimpleInvokeStr(lib, "main")); 951 EXPECT_EQ("static", SimpleInvokeStr(lib, "main"));
952 952
953 lib = TestCase::GetReloadErrorOrRootLibrary(); 953 lib = TestCase::GetReloadErrorOrRootLibrary();
954 EXPECT_VALID(lib); 954 EXPECT_VALID(lib);
955 955
956 EXPECT_EQ("static", SimpleInvokeStr(lib, "main")); 956 EXPECT_EQ("static", SimpleInvokeStr(lib, "main"));
957 } 957 }
958 958
959 959
960 TEST_CASE(IsolateReload_PendingConstructorCall_AbstractToConcrete) { 960 TEST_CASE(IsolateReload_PendingConstructorCall_AbstractToConcrete) {
961 const char* kScript = 961 const char* kScript =
962 "import 'isolate_reload_test_helper';\n" 962 "import 'test:isolate_reload_helper';\n"
963 "abstract class Foo {}\n" 963 "abstract class Foo {}\n"
964 "class C {\n" 964 "class C {\n"
965 " test() {\n" 965 " test() {\n"
966 " reloadTest();\n" 966 " reloadTest();\n"
967 " return new Foo();\n" 967 " return new Foo();\n"
968 " }\n" 968 " }\n"
969 "}\n" 969 "}\n"
970 "main() {\n" 970 "main() {\n"
971 " try {\n" 971 " try {\n"
972 " new C().test();\n" 972 " new C().test();\n"
973 " return 'okay';\n" 973 " return 'okay';\n"
974 " } catch (e) {\n" 974 " } catch (e) {\n"
975 " return 'exception';\n" 975 " return 'exception';\n"
976 " }\n" 976 " }\n"
977 "}\n"; 977 "}\n";
978 978
979 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 979 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
980 EXPECT_VALID(lib); 980 EXPECT_VALID(lib);
981 981
982 const char* kReloadScript = 982 const char* kReloadScript =
983 "import 'isolate_reload_test_helper';\n" 983 "import 'test:isolate_reload_helper';\n"
984 "class Foo {}\n" 984 "class Foo {}\n"
985 "class C {\n" 985 "class C {\n"
986 " test() {\n" 986 " test() {\n"
987 " reloadTest();\n" 987 " reloadTest();\n"
988 " return new Foo();\n" 988 " return new Foo();\n"
989 " }\n" 989 " }\n"
990 "}\n" 990 "}\n"
991 "main() {\n" 991 "main() {\n"
992 " try {\n" 992 " try {\n"
993 " new C().test();\n" 993 " new C().test();\n"
994 " return 'okay';\n" 994 " return 'okay';\n"
995 " } catch (e) {\n" 995 " } catch (e) {\n"
996 " return 'exception';\n" 996 " return 'exception';\n"
997 " }\n" 997 " }\n"
998 "}\n"; 998 "}\n";
999 999
1000 TestCase::SetReloadTestScript(kReloadScript); 1000 TestCase::SetReloadTestScript(kReloadScript);
1001 1001
1002 EXPECT_EQ("okay", SimpleInvokeStr(lib, "main")); 1002 EXPECT_EQ("okay", SimpleInvokeStr(lib, "main"));
1003 1003
1004 lib = TestCase::GetReloadErrorOrRootLibrary(); 1004 lib = TestCase::GetReloadErrorOrRootLibrary();
1005 EXPECT_VALID(lib); 1005 EXPECT_VALID(lib);
1006 1006
1007 EXPECT_EQ("okay", SimpleInvokeStr(lib, "main")); 1007 EXPECT_EQ("okay", SimpleInvokeStr(lib, "main"));
1008 } 1008 }
1009 1009
1010 1010
1011 TEST_CASE(IsolateReload_PendingConstructorCall_ConcreteToAbstract) { 1011 TEST_CASE(IsolateReload_PendingConstructorCall_ConcreteToAbstract) {
1012 const char* kScript = 1012 const char* kScript =
1013 "import 'isolate_reload_test_helper';\n" 1013 "import 'test:isolate_reload_helper';\n"
1014 "class Foo {}\n" 1014 "class Foo {}\n"
1015 "class C {\n" 1015 "class C {\n"
1016 " test() {\n" 1016 " test() {\n"
1017 " reloadTest();\n" 1017 " reloadTest();\n"
1018 " return new Foo();\n" 1018 " return new Foo();\n"
1019 " }\n" 1019 " }\n"
1020 "}\n" 1020 "}\n"
1021 "main() {\n" 1021 "main() {\n"
1022 " try {\n" 1022 " try {\n"
1023 " new C().test();\n" 1023 " new C().test();\n"
1024 " return 'okay';\n" 1024 " return 'okay';\n"
1025 " } catch (e) {\n" 1025 " } catch (e) {\n"
1026 " return 'exception';\n" 1026 " return 'exception';\n"
1027 " }\n" 1027 " }\n"
1028 "}\n"; 1028 "}\n";
1029 1029
1030 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1030 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1031 EXPECT_VALID(lib); 1031 EXPECT_VALID(lib);
1032 1032
1033 const char* kReloadScript = 1033 const char* kReloadScript =
1034 "import 'isolate_reload_test_helper';\n" 1034 "import 'test:isolate_reload_helper';\n"
1035 "abstract class Foo {}\n" 1035 "abstract class Foo {}\n"
1036 "class C {\n" 1036 "class C {\n"
1037 " test() {\n" 1037 " test() {\n"
1038 " reloadTest();\n" 1038 " reloadTest();\n"
1039 " return new Foo();\n" 1039 " return new Foo();\n"
1040 " }\n" 1040 " }\n"
1041 "}\n" 1041 "}\n"
1042 "main() {\n" 1042 "main() {\n"
1043 " try {\n" 1043 " try {\n"
1044 " new C().test();\n" 1044 " new C().test();\n"
1045 " return 'okay';\n" 1045 " return 'okay';\n"
1046 " } catch (e) {\n" 1046 " } catch (e) {\n"
1047 " return 'exception';\n" 1047 " return 'exception';\n"
1048 " }\n" 1048 " }\n"
1049 "}\n"; 1049 "}\n";
1050 1050
1051 TestCase::SetReloadTestScript(kReloadScript); 1051 TestCase::SetReloadTestScript(kReloadScript);
1052 1052
1053 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main")); 1053 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main"));
1054 1054
1055 lib = TestCase::GetReloadErrorOrRootLibrary(); 1055 lib = TestCase::GetReloadErrorOrRootLibrary();
1056 EXPECT_VALID(lib); 1056 EXPECT_VALID(lib);
1057 1057
1058 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main")); 1058 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main"));
1059 } 1059 }
1060 1060
1061 1061
1062 TEST_CASE(IsolateReload_PendingStaticCall_DefinedToNSM) { 1062 TEST_CASE(IsolateReload_PendingStaticCall_DefinedToNSM) {
1063 const char* kScript = 1063 const char* kScript =
1064 "import 'isolate_reload_test_helper';\n" 1064 "import 'test:isolate_reload_helper';\n"
1065 "class C {\n" 1065 "class C {\n"
1066 " static foo() => 'static'\n" 1066 " static foo() => 'static'\n"
1067 " test() {\n" 1067 " test() {\n"
1068 " reloadTest();\n" 1068 " reloadTest();\n"
1069 " return C.foo();\n" 1069 " return C.foo();\n"
1070 " }\n" 1070 " }\n"
1071 "}\n" 1071 "}\n"
1072 "main() {\n" 1072 "main() {\n"
1073 " try {\n" 1073 " try {\n"
1074 " return new C().test();\n" 1074 " return new C().test();\n"
1075 " } catch (e) {\n" 1075 " } catch (e) {\n"
1076 " return 'exception';\n" 1076 " return 'exception';\n"
1077 " }\n" 1077 " }\n"
1078 "}\n"; 1078 "}\n";
1079 1079
1080 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1080 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1081 EXPECT_VALID(lib); 1081 EXPECT_VALID(lib);
1082 1082
1083 const char* kReloadScript = 1083 const char* kReloadScript =
1084 "import 'isolate_reload_test_helper';\n" 1084 "import 'test:isolate_reload_helper';\n"
1085 "class C {\n" 1085 "class C {\n"
1086 " test() {\n" 1086 " test() {\n"
1087 " reloadTest();\n" 1087 " reloadTest();\n"
1088 " return C.foo();\n" 1088 " return C.foo();\n"
1089 " }\n" 1089 " }\n"
1090 "}\n" 1090 "}\n"
1091 "main() {\n" 1091 "main() {\n"
1092 " try {\n" 1092 " try {\n"
1093 " return new C().test();\n" 1093 " return new C().test();\n"
1094 " } catch (e) {\n" 1094 " } catch (e) {\n"
1095 " return 'exception';\n" 1095 " return 'exception';\n"
1096 " }\n" 1096 " }\n"
1097 "}\n"; 1097 "}\n";
1098 1098
1099 TestCase::SetReloadTestScript(kReloadScript); 1099 TestCase::SetReloadTestScript(kReloadScript);
1100 1100
1101 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main")); 1101 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main"));
1102 1102
1103 lib = TestCase::GetReloadErrorOrRootLibrary(); 1103 lib = TestCase::GetReloadErrorOrRootLibrary();
1104 EXPECT_VALID(lib); 1104 EXPECT_VALID(lib);
1105 1105
1106 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main")); 1106 EXPECT_EQ("exception", SimpleInvokeStr(lib, "main"));
1107 } 1107 }
1108 1108
1109 1109
1110 TEST_CASE(IsolateReload_PendingStaticCall_NSMToDefined) { 1110 TEST_CASE(IsolateReload_PendingStaticCall_NSMToDefined) {
1111 const char* kScript = 1111 const char* kScript =
1112 "import 'isolate_reload_test_helper';\n" 1112 "import 'test:isolate_reload_helper';\n"
1113 "class C {\n" 1113 "class C {\n"
1114 " test() {\n" 1114 " test() {\n"
1115 " reloadTest();\n" 1115 " reloadTest();\n"
1116 " return C.foo();\n" 1116 " return C.foo();\n"
1117 " }\n" 1117 " }\n"
1118 "}\n" 1118 "}\n"
1119 "main() {\n" 1119 "main() {\n"
1120 " try {\n" 1120 " try {\n"
1121 " return new C().test();\n" 1121 " return new C().test();\n"
1122 " } catch (e) {\n" 1122 " } catch (e) {\n"
1123 " return 'exception';\n" 1123 " return 'exception';\n"
1124 " }\n" 1124 " }\n"
1125 "}\n"; 1125 "}\n";
1126 1126
1127 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); 1127 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
1128 EXPECT_VALID(lib); 1128 EXPECT_VALID(lib);
1129 1129
1130 const char* kReloadScript = 1130 const char* kReloadScript =
1131 "import 'isolate_reload_test_helper';\n" 1131 "import 'test:isolate_reload_helper';\n"
1132 "class C {\n" 1132 "class C {\n"
1133 " static foo() => 'static'\n" 1133 " static foo() => 'static'\n"
1134 " test() {\n" 1134 " test() {\n"
1135 " reloadTest();\n" 1135 " reloadTest();\n"
1136 " return C.foo();\n" 1136 " return C.foo();\n"
1137 " }\n" 1137 " }\n"
1138 "}\n" 1138 "}\n"
1139 "main() {\n" 1139 "main() {\n"
1140 " try {\n" 1140 " try {\n"
1141 " return new C().test();\n" 1141 " return new C().test();\n"
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 1823
1824 // ...and the non-core subclass is still named AIterator. 1824 // ...and the non-core subclass is still named AIterator.
1825 new_subclass = subclasses.At(subclasses.Length() - 1); 1825 new_subclass = subclasses.At(subclasses.Length() - 1);
1826 name = Class::Cast(new_subclass).Name(); 1826 name = Class::Cast(new_subclass).Name();
1827 EXPECT_STREQ("AIterator", name.ToCString()); 1827 EXPECT_STREQ("AIterator", name.ToCString());
1828 } 1828 }
1829 1829
1830 #endif // !PRODUCT 1830 #endif // !PRODUCT
1831 1831
1832 } // namespace dart 1832 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/unit_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698