| OLD | NEW | 
|---|
| 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 "platform/assert.h" | 5 #include "platform/assert.h" | 
| 6 #include "vm/assembler.h" | 6 #include "vm/assembler.h" | 
| 7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" | 
| 8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" | 
| 9 #include "vm/isolate.h" | 9 #include "vm/isolate.h" | 
| 10 #include "vm/object.h" | 10 #include "vm/object.h" | 
| 11 #include "vm/object_store.h" | 11 #include "vm/object_store.h" | 
| 12 #include "vm/symbols.h" | 12 #include "vm/symbols.h" | 
| 13 #include "vm/unit_test.h" | 13 #include "vm/unit_test.h" | 
| 14 | 14 | 
| 15 namespace dart { | 15 namespace dart { | 
| 16 | 16 | 
| 17 TEST_CASE(Class) { | 17 TEST_CASE(Class) { | 
| 18   // Allocate the class first. | 18   // Allocate the class first. | 
| 19   const String& class_name = String::Handle(Symbols::New("MyClass")); | 19   const String& class_name = String::Handle(Symbols::New("MyClass")); | 
| 20   const Script& script = Script::Handle(); | 20   const Script& script = Script::Handle(); | 
| 21   const Class& cls = Class::Handle( | 21   const Class& cls = Class::Handle( | 
| 22       Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 22       Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 
| 23 | 23 | 
| 24   // Class has no fields. | 24   // Class has no fields. | 
| 25   const Array& no_fields = Array::Handle(Object::empty_array()); | 25   cls.SetFields(Object::empty_array()); | 
| 26   cls.SetFields(no_fields); |  | 
| 27 | 26 | 
| 28   // Create and populate the function arrays. | 27   // Create and populate the function arrays. | 
| 29   const Array& functions = Array::Handle(Array::New(6)); | 28   const Array& functions = Array::Handle(Array::New(6)); | 
| 30   Function& function = Function::Handle(); | 29   Function& function = Function::Handle(); | 
| 31   String& function_name = String::Handle(); | 30   String& function_name = String::Handle(); | 
| 32   function_name = Symbols::New("foo"); | 31   function_name = Symbols::New("foo"); | 
| 33   function = Function::New( | 32   function = Function::New( | 
| 34       function_name, RawFunction::kRegularFunction, | 33       function_name, RawFunction::kRegularFunction, | 
| 35       false, false, false, false, cls, 0); | 34       false, false, false, false, cls, 0); | 
| 36   functions.SetAt(0, function); | 35   functions.SetAt(0, function); | 
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 161 | 160 | 
| 162 | 161 | 
| 163 TEST_CASE(InstanceClass) { | 162 TEST_CASE(InstanceClass) { | 
| 164   // Allocate the class first. | 163   // Allocate the class first. | 
| 165   String& class_name = String::Handle(Symbols::New("EmptyClass")); | 164   String& class_name = String::Handle(Symbols::New("EmptyClass")); | 
| 166   Script& script = Script::Handle(); | 165   Script& script = Script::Handle(); | 
| 167   const Class& empty_class = | 166   const Class& empty_class = | 
| 168       Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 167       Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 
| 169 | 168 | 
| 170   // No functions and no super class for the EmptyClass. | 169   // No functions and no super class for the EmptyClass. | 
| 171   const Array& no_fields = Array::Handle(Object::empty_array()); | 170   empty_class.SetFields(Object::empty_array()); | 
| 172   empty_class.SetFields(no_fields); |  | 
| 173   empty_class.Finalize(); | 171   empty_class.Finalize(); | 
| 174   EXPECT_EQ(kObjectAlignment, empty_class.instance_size()); | 172   EXPECT_EQ(kObjectAlignment, empty_class.instance_size()); | 
| 175   Instance& instance = Instance::Handle(Instance::New(empty_class)); | 173   Instance& instance = Instance::Handle(Instance::New(empty_class)); | 
| 176   EXPECT_EQ(empty_class.raw(), instance.clazz()); | 174   EXPECT_EQ(empty_class.raw(), instance.clazz()); | 
| 177 | 175 | 
| 178   class_name = Symbols::New("OneFieldClass"); | 176   class_name = Symbols::New("OneFieldClass"); | 
| 179   const Class& one_field_class = | 177   const Class& one_field_class = | 
| 180       Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 178       Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex)); | 
| 181 | 179 | 
| 182   // No functions and no super class for the OneFieldClass. | 180   // No functions and no super class for the OneFieldClass. | 
| (...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1647   EXPECT(array.Equals(other_array)); | 1645   EXPECT(array.Equals(other_array)); | 
| 1648 | 1646 | 
| 1649   other_array.SetAt(1, other_array); | 1647   other_array.SetAt(1, other_array); | 
| 1650   EXPECT(!array.Equals(other_array)); | 1648   EXPECT(!array.Equals(other_array)); | 
| 1651 | 1649 | 
| 1652   other_array = Array::New(kArrayLen - 1); | 1650   other_array = Array::New(kArrayLen - 1); | 
| 1653   other_array.SetAt(0, array); | 1651   other_array.SetAt(0, array); | 
| 1654   other_array.SetAt(2, array); | 1652   other_array.SetAt(2, array); | 
| 1655   EXPECT(!array.Equals(other_array)); | 1653   EXPECT(!array.Equals(other_array)); | 
| 1656 | 1654 | 
| 1657   EXPECT_EQ(0, Array::Handle(Object::empty_array()).Length()); | 1655   EXPECT_EQ(0, Object::empty_array().Length()); | 
| 1658 } | 1656 } | 
| 1659 | 1657 | 
| 1660 | 1658 | 
| 1661 TEST_CASE(StringCodePointIterator) { | 1659 TEST_CASE(StringCodePointIterator) { | 
| 1662   const String& str0 = String::Handle(String::New("")); | 1660   const String& str0 = String::Handle(String::New("")); | 
| 1663   String::CodePointIterator it0(str0); | 1661   String::CodePointIterator it0(str0); | 
| 1664   EXPECT(!it0.Next()); | 1662   EXPECT(!it0.Next()); | 
| 1665 | 1663 | 
| 1666   const String& str1 = String::Handle(String::New(" \xc3\xa7 ")); | 1664   const String& str1 = String::Handle(String::New(" \xc3\xa7 ")); | 
| 1667   String::CodePointIterator it1(str1); | 1665   String::CodePointIterator it1(str1); | 
| (...skipping 1817 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3485   EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3483   EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 
| 3486   EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3484   EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 
| 3487   EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3485   EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 
| 3488   EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3486   EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 
| 3489   EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3487   EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 
| 3490 } | 3488 } | 
| 3491 | 3489 | 
| 3492 #endif  // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3490 #endif  // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 
| 3493 | 3491 | 
| 3494 }  // namespace dart | 3492 }  // namespace dart | 
| OLD | NEW | 
|---|