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

Unified Diff: runtime/vm/isolate_reload_test.cc

Issue 2153143002: Rework how enums are implemented and reloaded (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/isolate_reload.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate_reload_test.cc
diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc
index bf239c92091b0950f01a76ed025d755367968def..6f36ba0aee90c2523d04a7b8e3f8a59e421ece82 100644
--- a/runtime/vm/isolate_reload_test.cc
+++ b/runtime/vm/isolate_reload_test.cc
@@ -1445,6 +1445,7 @@ TEST_CASE(IsolateReload_EnumDelete) {
"}\n"
"var x;\n"
"main() {\n"
+ " x = Fruit.Cantalope;\n"
" return Fruit.Apple.toString();\n"
"}\n";
@@ -1453,121 +1454,24 @@ TEST_CASE(IsolateReload_EnumDelete) {
EXPECT_STREQ("Fruit.Apple", SimpleInvokeStr(lib, "main"));
- // Delete 'Cantalope'.
-
- const char* kReloadScript =
- "enum Fruit {\n"
- " Apple,\n"
- " Banana,\n"
- "}\n"
- "var x;\n"
- "main() {\n"
- " String r = '${Fruit.Apple.index}/${Fruit.Apple} ';\n"
- " r += '${Fruit.Banana.index}/${Fruit.Banana} ';\n"
- " r += '${Fruit.Cantalope.index}/${Fruit.Cantalope}';\n"
- " return r;\n"
- "}\n";
-
- lib = TestCase::ReloadTestScript(kReloadScript);
- EXPECT_VALID(lib);
-
- EXPECT_STREQ("0/Fruit.Apple 1/Fruit.Banana 2/Fruit.Cantalope",
- SimpleInvokeStr(lib, "main"));
-}
-
-
-TEST_CASE(IsolateReload_EnumComplex) {
- const char* kScript =
- "enum Fruit {\n"
- " Apple,\n"
- " Banana,\n"
- " Cantalope,\n"
- "}\n"
- "var x;\n"
- "var y;\n"
- "var z;\n"
- "main() {\n"
- " x = Fruit.Apple;\n"
- " y = Fruit.Banana;\n"
- " z = Fruit.Cantalope;\n"
- " return Fruit.Apple.toString();\n"
- "}\n";
-
- Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
- EXPECT_VALID(lib);
-
- EXPECT_STREQ("Fruit.Apple", SimpleInvokeStr(lib, "main"));
-
- // Delete 'Cantalope'. Add 'Dragon'. Move 'Apple' and 'Banana'.
+ // Delete 'Cantalope' but make sure that we can still invoke toString,
+ // and access the hashCode and index properties.
const char* kReloadScript =
"enum Fruit {\n"
- " Dragon,\n"
" Apple,\n"
" Banana,\n"
"}\n"
"var x;\n"
- "var y;\n"
- "var z;\n"
"main() {\n"
- " String r = '';\n"
- " r += '${identical(x, Fruit.Apple)}';\n"
- " r += ' ${identical(y, Fruit.Banana)}';\n"
- " r += ' ${identical(z, Fruit.Cantalope)}';\n"
- " r += ' ${Fruit.Dragon}';\n"
+ " String r = '$x ${x.hashCode is int} ${x.index}';\n"
" return r;\n"
"}\n";
lib = TestCase::ReloadTestScript(kReloadScript);
EXPECT_VALID(lib);
- EXPECT_STREQ("true true true Fruit.Dragon", SimpleInvokeStr(lib, "main"));
-}
-
-
-TEST_CASE(IsolateReload_EnumValuesArray) {
- const char* kScript =
- "enum Fruit {\n"
- " Cantalope,\n"
- " Apple,\n"
- " Banana,\n"
- "}\n"
- "var x;\n"
- "main() {\n"
- " x = Fruit.Cantalope;\n"
- " return Fruit.Apple.toString();\n"
- "}\n";
-
- Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
- EXPECT_VALID(lib);
-
- EXPECT_STREQ("Fruit.Apple", SimpleInvokeStr(lib, "main"));
-
- // Delete 'Cantalope'.
-
- const char* kReloadScript =
- "enum Fruit {\n"
- " Banana,\n"
- " Apple\n"
- "}\n"
- "var x;\n"
- "bool identityCheck(Fruit f) {\n"
- " return identical(Fruit.values[f.index], f);\n"
- "}\n"
- "main() {\n"
- " if ((x is Fruit) && identical(x, Fruit.Cantalope)) {\n"
- " String r = '${identityCheck(Fruit.Apple)}';\n"
- " r += ' ${identityCheck(Fruit.Banana)}';\n"
- " r += ' ${identityCheck(Fruit.Cantalope)}';\n"
- " r += ' ${identityCheck(x)}';\n"
- " return r;\n"
- " }\n"
- "}\n";
-
- lib = TestCase::ReloadTestScript(kReloadScript);
- EXPECT_VALID(lib);
-
- EXPECT_STREQ("true true true true",
+ EXPECT_STREQ("Fruit.Cantalope true 2",
SimpleInvokeStr(lib, "main"));
}
« no previous file with comments | « runtime/vm/isolate_reload.cc ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698