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

Side by Side Diff: vm/object_test.cc

Issue 11969029: Allow externalization of canonical strings also. Only restrict canonical strings (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « vm/object.cc ('k') | no next file » | 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 "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
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
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
OLDNEW
« no previous file with comments | « vm/object.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698