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

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

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/class_finalizer.cc ('k') | runtime/vm/class_table.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 "vm/class_finalizer.h"
5 #include "platform/assert.h" 6 #include "platform/assert.h"
6 #include "vm/class_finalizer.h"
7 #include "vm/symbols.h" 7 #include "vm/symbols.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 9
10 namespace dart { 10 namespace dart {
11 11
12
13 static RawClass* CreateTestClass(const char* name) { 12 static RawClass* CreateTestClass(const char* name) {
14 const String& class_name = 13 const String& class_name =
15 String::Handle(Symbols::New(Thread::Current(), name)); 14 String::Handle(Symbols::New(Thread::Current(), name));
16 const Script& script = Script::Handle(); 15 const Script& script = Script::Handle();
17 const Class& cls = Class::Handle(Class::New( 16 const Class& cls = Class::Handle(Class::New(
18 Library::Handle(), class_name, script, TokenPosition::kNoSource)); 17 Library::Handle(), class_name, script, TokenPosition::kNoSource));
19 cls.set_interfaces(Object::empty_array()); 18 cls.set_interfaces(Object::empty_array());
20 cls.SetFunctions(Object::empty_array()); 19 cls.SetFunctions(Object::empty_array());
21 cls.SetFields(Object::empty_array()); 20 cls.SetFields(Object::empty_array());
22 return cls.raw(); 21 return cls.raw();
23 } 22 }
24 23
25
26 TEST_CASE(ClassFinalizer) { 24 TEST_CASE(ClassFinalizer) {
27 Zone* zone = thread->zone(); 25 Zone* zone = thread->zone();
28 Isolate* isolate = thread->isolate(); 26 Isolate* isolate = thread->isolate();
29 ObjectStore* object_store = isolate->object_store(); 27 ObjectStore* object_store = isolate->object_store();
30 const GrowableObjectArray& pending_classes = 28 const GrowableObjectArray& pending_classes =
31 GrowableObjectArray::Handle(zone, object_store->pending_classes()); 29 GrowableObjectArray::Handle(zone, object_store->pending_classes());
32 GrowableArray<const Class*> classes_1; 30 GrowableArray<const Class*> classes_1;
33 classes_1.Add(&Class::Handle(CreateTestClass("BMW"))); 31 classes_1.Add(&Class::Handle(CreateTestClass("BMW")));
34 pending_classes.Add(*classes_1[0]); 32 pending_classes.Add(*classes_1[0]);
35 classes_1.Add(&Class::Handle(CreateTestClass("Porsche"))); 33 classes_1.Add(&Class::Handle(CreateTestClass("Porsche")));
(...skipping 10 matching lines...) Expand all
46 for (int i = 0; i < classes_1.length(); i++) { 44 for (int i = 0; i < classes_1.length(); i++) {
47 EXPECT(classes_1[i]->is_type_finalized()); 45 EXPECT(classes_1[i]->is_type_finalized());
48 } 46 }
49 for (int i = 0; i < classes_2.length(); i++) { 47 for (int i = 0; i < classes_2.length(); i++) {
50 EXPECT(classes_2[i]->is_type_finalized()); 48 EXPECT(classes_2[i]->is_type_finalized());
51 } 49 }
52 EXPECT(ClassFinalizer::AllClassesFinalized()); 50 EXPECT(ClassFinalizer::AllClassesFinalized());
53 EXPECT(ClassFinalizer::ProcessPendingClasses()); 51 EXPECT(ClassFinalizer::ProcessPendingClasses());
54 } 52 }
55 53
56
57 TEST_CASE(ClassFinalize_Cycles) { 54 TEST_CASE(ClassFinalize_Cycles) {
58 Zone* zone = thread->zone(); 55 Zone* zone = thread->zone();
59 Isolate* isolate = thread->isolate(); 56 Isolate* isolate = thread->isolate();
60 ObjectStore* object_store = isolate->object_store(); 57 ObjectStore* object_store = isolate->object_store();
61 const GrowableObjectArray& pending_classes = 58 const GrowableObjectArray& pending_classes =
62 GrowableObjectArray::Handle(zone, object_store->pending_classes()); 59 GrowableObjectArray::Handle(zone, object_store->pending_classes());
63 GrowableArray<const Class*> classes; 60 GrowableArray<const Class*> classes;
64 classes.Add(&Class::Handle(CreateTestClass("Jungfrau"))); 61 classes.Add(&Class::Handle(CreateTestClass("Jungfrau")));
65 pending_classes.Add(*classes[0]); 62 pending_classes.Add(*classes[0]);
66 classes.Add(&Class::Handle(CreateTestClass("Eiger"))); 63 classes.Add(&Class::Handle(CreateTestClass("Eiger")));
67 pending_classes.Add(*classes[1]); 64 pending_classes.Add(*classes[1]);
68 // Create a cycle. 65 // Create a cycle.
69 classes[0]->set_super_type( 66 classes[0]->set_super_type(
70 Type::Handle(Type::NewNonParameterizedType(*classes[1]))); 67 Type::Handle(Type::NewNonParameterizedType(*classes[1])));
71 classes[1]->set_super_type( 68 classes[1]->set_super_type(
72 Type::Handle(Type::NewNonParameterizedType(*classes[0]))); 69 Type::Handle(Type::NewNonParameterizedType(*classes[0])));
73 EXPECT(!ClassFinalizer::ProcessPendingClasses()); 70 EXPECT(!ClassFinalizer::ProcessPendingClasses());
74 } 71 }
75 72
76
77 static RawLibrary* NewLib(const char* url_chars) { 73 static RawLibrary* NewLib(const char* url_chars) {
78 String& url = String::ZoneHandle(Symbols::New(Thread::Current(), url_chars)); 74 String& url = String::ZoneHandle(Symbols::New(Thread::Current(), url_chars));
79 return Library::New(url); 75 return Library::New(url);
80 } 76 }
81 77
82
83 TEST_CASE(ClassFinalize_Resolve) { 78 TEST_CASE(ClassFinalize_Resolve) {
84 Zone* zone = thread->zone(); 79 Zone* zone = thread->zone();
85 Isolate* isolate = thread->isolate(); 80 Isolate* isolate = thread->isolate();
86 ObjectStore* object_store = isolate->object_store(); 81 ObjectStore* object_store = isolate->object_store();
87 const GrowableObjectArray& pending_classes = 82 const GrowableObjectArray& pending_classes =
88 GrowableObjectArray::Handle(zone, object_store->pending_classes()); 83 GrowableObjectArray::Handle(zone, object_store->pending_classes());
89 Class& rhb = Class::Handle(CreateTestClass("RhB")); 84 Class& rhb = Class::Handle(CreateTestClass("RhB"));
90 pending_classes.Add(rhb); 85 pending_classes.Add(rhb);
91 Class& sbb = Class::Handle(CreateTestClass("SBB")); 86 Class& sbb = Class::Handle(CreateTestClass("SBB"));
92 pending_classes.Add(sbb); 87 pending_classes.Add(sbb);
93 Library& lib = Library::Handle(NewLib("TestLib")); 88 Library& lib = Library::Handle(NewLib("TestLib"));
94 lib.AddClass(rhb); 89 lib.AddClass(rhb);
95 lib.AddClass(sbb); 90 lib.AddClass(sbb);
96 const String& superclass_name = String::Handle(sbb.Name()); 91 const String& superclass_name = String::Handle(sbb.Name());
97 const UnresolvedClass& unresolved = 92 const UnresolvedClass& unresolved =
98 UnresolvedClass::Handle(UnresolvedClass::New( 93 UnresolvedClass::Handle(UnresolvedClass::New(
99 LibraryPrefix::Handle(), superclass_name, TokenPosition::kNoSource)); 94 LibraryPrefix::Handle(), superclass_name, TokenPosition::kNoSource));
100 const TypeArguments& type_arguments = TypeArguments::Handle(); 95 const TypeArguments& type_arguments = TypeArguments::Handle();
101 rhb.set_super_type( 96 rhb.set_super_type(
102 Type::Handle(Type::New(Object::Handle(unresolved.raw()), type_arguments, 97 Type::Handle(Type::New(Object::Handle(unresolved.raw()), type_arguments,
103 TokenPosition::kNoSource))); 98 TokenPosition::kNoSource)));
104 EXPECT(ClassFinalizer::ProcessPendingClasses()); 99 EXPECT(ClassFinalizer::ProcessPendingClasses());
105 } 100 }
106 101
107 } // namespace dart 102 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/class_finalizer.cc ('k') | runtime/vm/class_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698