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" |
(...skipping 2942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2953 bool EqualsIgnoringPrivate(const String& name, const String& private_name); | 2953 bool EqualsIgnoringPrivate(const String& name, const String& private_name); |
2954 | 2954 |
2955 | 2955 |
2956 TEST_CASE(EqualsIgnoringPrivate) { | 2956 TEST_CASE(EqualsIgnoringPrivate) { |
2957 String& mangled_name = String::Handle(); | 2957 String& mangled_name = String::Handle(); |
2958 String& bare_name = String::Handle(); | 2958 String& bare_name = String::Handle(); |
2959 | 2959 |
2960 // Simple matches. | 2960 // Simple matches. |
2961 mangled_name = OneByteString::New("foo"); | 2961 mangled_name = OneByteString::New("foo"); |
2962 bare_name = OneByteString::New("foo"); | 2962 bare_name = OneByteString::New("foo"); |
2963 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2963 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2964 | 2964 |
2965 mangled_name = OneByteString::New("foo."); | 2965 mangled_name = OneByteString::New("foo."); |
2966 bare_name = OneByteString::New("foo."); | 2966 bare_name = OneByteString::New("foo."); |
2967 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2967 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2968 | 2968 |
2969 mangled_name = OneByteString::New("foo.named"); | 2969 mangled_name = OneByteString::New("foo.named"); |
2970 bare_name = OneByteString::New("foo.named"); | 2970 bare_name = OneByteString::New("foo.named"); |
2971 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2971 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2972 | 2972 |
2973 // Simple mismatches. | 2973 // Simple mismatches. |
2974 mangled_name = OneByteString::New("bar"); | 2974 mangled_name = OneByteString::New("bar"); |
2975 bare_name = OneByteString::New("foo"); | 2975 bare_name = OneByteString::New("foo"); |
2976 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2976 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2977 | 2977 |
2978 mangled_name = OneByteString::New("foo."); | 2978 mangled_name = OneByteString::New("foo."); |
2979 bare_name = OneByteString::New("foo"); | 2979 bare_name = OneByteString::New("foo"); |
2980 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2980 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2981 | 2981 |
2982 mangled_name = OneByteString::New("foo"); | 2982 mangled_name = OneByteString::New("foo"); |
2983 bare_name = OneByteString::New("foo."); | 2983 bare_name = OneByteString::New("foo."); |
2984 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2984 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2985 | 2985 |
2986 mangled_name = OneByteString::New("foo.name"); | 2986 mangled_name = OneByteString::New("foo.name"); |
2987 bare_name = OneByteString::New("foo.named"); | 2987 bare_name = OneByteString::New("foo.named"); |
2988 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2988 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2989 | 2989 |
2990 mangled_name = OneByteString::New("foo.named"); | 2990 mangled_name = OneByteString::New("foo.named"); |
2991 bare_name = OneByteString::New("foo.name"); | 2991 bare_name = OneByteString::New("foo.name"); |
2992 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2992 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2993 | 2993 |
2994 // Private match. | 2994 // Private match. |
2995 mangled_name = OneByteString::New("foo@12345"); | 2995 mangled_name = OneByteString::New("foo@12345"); |
2996 bare_name = OneByteString::New("foo"); | 2996 bare_name = OneByteString::New("foo"); |
2997 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 2997 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
2998 | 2998 |
2999 // Private mismatch. | 2999 // Private mismatch. |
3000 mangled_name = OneByteString::New("food@12345"); | 3000 mangled_name = OneByteString::New("food@12345"); |
3001 bare_name = OneByteString::New("foo"); | 3001 bare_name = OneByteString::New("foo"); |
3002 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3002 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3003 | 3003 |
3004 // Private mismatch 2. | 3004 // Private mismatch 2. |
3005 mangled_name = OneByteString::New("foo@12345"); | 3005 mangled_name = OneByteString::New("foo@12345"); |
3006 bare_name = OneByteString::New("food"); | 3006 bare_name = OneByteString::New("food"); |
3007 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3007 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3008 | 3008 |
3009 // Private constructor match. | 3009 // Private constructor match. |
3010 mangled_name = OneByteString::New("foo@12345."); | 3010 mangled_name = OneByteString::New("foo@12345."); |
3011 bare_name = OneByteString::New("foo."); | 3011 bare_name = OneByteString::New("foo."); |
3012 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3012 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3013 | 3013 |
3014 // Private constructor mismatch. | 3014 // Private constructor mismatch. |
3015 mangled_name = OneByteString::New("foo@12345."); | 3015 mangled_name = OneByteString::New("foo@12345."); |
3016 bare_name = OneByteString::New("foo"); | 3016 bare_name = OneByteString::New("foo"); |
3017 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3017 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3018 | 3018 |
3019 // Private constructor mismatch 2. | 3019 // Private constructor mismatch 2. |
3020 mangled_name = OneByteString::New("foo@12345"); | 3020 mangled_name = OneByteString::New("foo@12345"); |
3021 bare_name = OneByteString::New("foo."); | 3021 bare_name = OneByteString::New("foo."); |
3022 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3022 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3023 | 3023 |
3024 // Named private constructor match. | 3024 // Named private constructor match. |
3025 mangled_name = OneByteString::New("foo@12345.named"); | 3025 mangled_name = OneByteString::New("foo@12345.named"); |
3026 bare_name = OneByteString::New("foo.named"); | 3026 bare_name = OneByteString::New("foo.named"); |
3027 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3027 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3028 | 3028 |
3029 // Named private constructor mismatch. | 3029 // Named private constructor mismatch. |
3030 mangled_name = OneByteString::New("foo@12345.name"); | 3030 mangled_name = OneByteString::New("foo@12345.name"); |
3031 bare_name = OneByteString::New("foo.named"); | 3031 bare_name = OneByteString::New("foo.named"); |
3032 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3032 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3033 | 3033 |
3034 // Named private constructor mismatch 2. | 3034 // Named private constructor mismatch 2. |
3035 mangled_name = OneByteString::New("foo@12345.named"); | 3035 mangled_name = OneByteString::New("foo@12345.named"); |
3036 bare_name = OneByteString::New("foo.name"); | 3036 bare_name = OneByteString::New("foo.name"); |
3037 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3037 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3038 | 3038 |
3039 // Named double-private constructor match. Yes, this happens. | 3039 // Named double-private constructor match. Yes, this happens. |
3040 mangled_name = OneByteString::New("foo@12345.named@12345"); | 3040 mangled_name = OneByteString::New("foo@12345.named@12345"); |
3041 bare_name = OneByteString::New("foo.named"); | 3041 bare_name = OneByteString::New("foo.named"); |
3042 EXPECT(OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3042 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3043 | 3043 |
3044 // Named double-private constructor mismatch. | 3044 // Named double-private constructor mismatch. |
3045 mangled_name = OneByteString::New("foo@12345.name@12345"); | 3045 mangled_name = OneByteString::New("foo@12345.name@12345"); |
3046 bare_name = OneByteString::New("foo.named"); | 3046 bare_name = OneByteString::New("foo.named"); |
3047 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3047 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
3048 | 3048 |
3049 // Named double-private constructor mismatch. | 3049 // Named double-private constructor mismatch. |
3050 mangled_name = OneByteString::New("foo@12345.named@12345"); | 3050 mangled_name = OneByteString::New("foo@12345.named@12345"); |
3051 bare_name = OneByteString::New("foo.name"); | 3051 bare_name = OneByteString::New("foo.name"); |
3052 EXPECT(!OneByteString::EqualsIgnoringPrivateKey(mangled_name, bare_name)); | 3052 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, bare_name)); |
| 3053 |
| 3054 const char* ext_mangled_str = "foo@12345.name@12345"; |
| 3055 const char* ext_bare_str = "foo.name"; |
| 3056 const char* ext_bad_bare_str = "foo.named"; |
| 3057 String& ext_mangled_name = String::Handle(); |
| 3058 String& ext_bare_name = String::Handle(); |
| 3059 String& ext_bad_bare_name = String::Handle(); |
| 3060 |
| 3061 mangled_name = OneByteString::New("foo@12345.name@12345"); |
| 3062 ext_mangled_name = ExternalOneByteString::New( |
| 3063 reinterpret_cast<const uint8_t*>(ext_mangled_str), |
| 3064 strlen(ext_mangled_str), NULL, NULL, Heap::kNew); |
| 3065 EXPECT(ext_mangled_name.IsExternalOneByteString()); |
| 3066 ext_bare_name = ExternalOneByteString::New( |
| 3067 reinterpret_cast<const uint8_t*>(ext_bare_str), |
| 3068 strlen(ext_bare_str), NULL, NULL, Heap::kNew); |
| 3069 EXPECT(ext_bare_name.IsExternalOneByteString()); |
| 3070 ext_bad_bare_name = ExternalOneByteString::New( |
| 3071 reinterpret_cast<const uint8_t*>(ext_bad_bare_str), |
| 3072 strlen(ext_bad_bare_str), NULL, NULL, Heap::kNew); |
| 3073 EXPECT(ext_bad_bare_name.IsExternalOneByteString()); |
| 3074 |
| 3075 // str1 - OneByteString, str2 - ExternalOneByteString. |
| 3076 EXPECT(String::EqualsIgnoringPrivateKey(mangled_name, ext_bare_name)); |
| 3077 EXPECT(!String::EqualsIgnoringPrivateKey(mangled_name, ext_bad_bare_name)); |
| 3078 |
| 3079 // str1 - ExternalOneByteString, str2 - OneByteString. |
| 3080 EXPECT(String::EqualsIgnoringPrivateKey(ext_mangled_name, bare_name)); |
| 3081 |
| 3082 // str1 - ExternalOneByteString, str2 - ExternalOneByteString. |
| 3083 EXPECT(String::EqualsIgnoringPrivateKey(ext_mangled_name, ext_bare_name)); |
| 3084 EXPECT(!String::EqualsIgnoringPrivateKey(ext_mangled_name, |
| 3085 ext_bad_bare_name)); |
3053 } | 3086 } |
3054 | 3087 |
3055 | 3088 |
3056 TEST_CASE(ArrayNew_Overflow_Crash) { | 3089 TEST_CASE(ArrayNew_Overflow_Crash) { |
3057 Array::Handle(Array::New(Array::kMaxElements + 1)); | 3090 Array::Handle(Array::New(Array::kMaxElements + 1)); |
3058 } | 3091 } |
3059 | 3092 |
3060 | 3093 |
3061 TEST_CASE(StackTraceFormat) { | 3094 TEST_CASE(StackTraceFormat) { |
3062 const char* kScriptChars = | 3095 const char* kScriptChars = |
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3553 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); | 3586 EXPECT_NE(test1.SourceFingerprint(), test3.SourceFingerprint()); |
3554 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); | 3587 EXPECT_NE(test3.SourceFingerprint(), test4.SourceFingerprint()); |
3555 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); | 3588 EXPECT_NE(test4.SourceFingerprint(), test5.SourceFingerprint()); |
3556 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); | 3589 EXPECT_NE(test5.SourceFingerprint(), test6.SourceFingerprint()); |
3557 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); | 3590 EXPECT_EQ(test6.SourceFingerprint(), test7.SourceFingerprint()); |
3558 } | 3591 } |
3559 | 3592 |
3560 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 3593 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
3561 | 3594 |
3562 } // namespace dart | 3595 } // namespace dart |
OLD | NEW |