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

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

Issue 219333011: Change how we provide value previews in the vm service. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix tests / gen js Created 6 years, 8 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 | « runtime/vm/object.cc ('k') | runtime/vm/service.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/assembler.h" 5 #include "vm/assembler.h"
6 #include "vm/bigint_operations.h" 6 #include "vm/bigint_operations.h"
7 #include "vm/class_finalizer.h" 7 #include "vm/class_finalizer.h"
8 #include "vm/dart_api_impl.h" 8 #include "vm/dart_api_impl.h"
9 #include "vm/dart_entry.h" 9 #include "vm/dart_entry.h"
10 #include "vm/debugger.h" 10 #include "vm/debugger.h"
(...skipping 3905 matching lines...) Expand 10 before | Expand all | Expand 10 after
3916 TEST_CASE(ToUserCString) { 3916 TEST_CASE(ToUserCString) {
3917 const char* kScriptChars = 3917 const char* kScriptChars =
3918 "var simple = 'simple';\n" 3918 "var simple = 'simple';\n"
3919 "var escapes = 'stuff\\n\\r\\f\\b\\t\\v\\'\"\\$stuff';\n" 3919 "var escapes = 'stuff\\n\\r\\f\\b\\t\\v\\'\"\\$stuff';\n"
3920 "var uescapes = 'stuff\\u0001\\u0002stuff';\n" 3920 "var uescapes = 'stuff\\u0001\\u0002stuff';\n"
3921 "var toolong = " 3921 "var toolong = "
3922 "'01234567890123456789012345678901234567890123456789howdy';\n" 3922 "'01234567890123456789012345678901234567890123456789howdy';\n"
3923 "var toolong2 = " 3923 "var toolong2 = "
3924 "'0123456789012345678901234567890123\\t567890123456789howdy';\n" 3924 "'0123456789012345678901234567890123\\t567890123456789howdy';\n"
3925 "var toolong3 = " 3925 "var toolong3 = "
3926 "'012345678901234567890123456789\\u0001567890123456789howdy';\n" 3926 "'012345678901234567890123456789\\u0001567890123456789howdy';\n";
3927 "\n"
3928 "class _Cobra { }\n"
3929 "var instance = new _Cobra();\n"
3930 "\n"
3931 "var empty_list = [];\n"
3932 "var simple_list = [1,2,'otter'];\n"
3933 "var nested_list = [[[[1]]],[2,'otter']];\n"
3934 "var deeply_nested_list = [[[[[1]]]],[2,'otter']];\n"
3935 "var toolong_list = "
3936 "['0123456789','0123456789','0123456789','0123456789'];\n"
3937 "var toolong2_list = [toolong];\n"
3938 "var justenough_list = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,99];"
3939 "var toolong3_list = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4];"
3940 "\n"
3941 "var simple_map = {1: 2, 2: 'otter'};\n";
3942 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 3927 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
3943 EXPECT_VALID(lib); 3928 EXPECT_VALID(lib);
3944 3929
3945 Instance& obj = Instance::Handle(); 3930 String& obj = String::Handle();
3946 Dart_Handle result; 3931 Dart_Handle result;
3947 3932
3948 // Simple string. 3933 // Simple string.
3949 result = Dart_GetField(lib, NewString("simple")); 3934 result = Dart_GetField(lib, NewString("simple"));
3950 EXPECT_VALID(result); 3935 EXPECT_VALID(result);
3951 obj ^= Api::UnwrapHandle(result); 3936 obj ^= Api::UnwrapHandle(result);
3952 EXPECT_STREQ("\"simple\"", obj.ToUserCString()); 3937 EXPECT_STREQ("\"simple\"", obj.ToUserCString(40));
3953 3938
3954 // Escaped chars. 3939 // Escaped chars.
3955 result = Dart_GetField(lib, NewString("escapes")); 3940 result = Dart_GetField(lib, NewString("escapes"));
3956 EXPECT_VALID(result); 3941 EXPECT_VALID(result);
3957 obj ^= Api::UnwrapHandle(result); 3942 obj ^= Api::UnwrapHandle(result);
3958 EXPECT_STREQ("\"stuff\\n\\r\\f\\b\\t\\v'\\\"\\$stuff\"", 3943 EXPECT_STREQ("\"stuff\\n\\r\\f\\b\\t\\v'\\\"\\$stuff\"",
3959 obj.ToUserCString()); 3944 obj.ToUserCString(40));
3960 3945
3961 // U-escaped chars. 3946 // U-escaped chars.
3962 result = Dart_GetField(lib, NewString("uescapes")); 3947 result = Dart_GetField(lib, NewString("uescapes"));
3963 EXPECT_VALID(result); 3948 EXPECT_VALID(result);
3964 obj ^= Api::UnwrapHandle(result); 3949 obj ^= Api::UnwrapHandle(result);
3965 EXPECT_STREQ("\"stuff\\u0001\\u0002stuff\"", obj.ToUserCString()); 3950 EXPECT_STREQ("\"stuff\\u0001\\u0002stuff\"", obj.ToUserCString(40));
3966 3951
3967 // Truncation. 3952 // Truncation.
3968 result = Dart_GetField(lib, NewString("toolong")); 3953 result = Dart_GetField(lib, NewString("toolong"));
3969 EXPECT_VALID(result); 3954 EXPECT_VALID(result);
3970 obj ^= Api::UnwrapHandle(result); 3955 obj ^= Api::UnwrapHandle(result);
3971 EXPECT_STREQ("\"01234567890123456789012345678901234\"...", 3956 EXPECT_STREQ("\"01234567890123456789012345678901234\"...",
3972 obj.ToUserCString()); 3957 obj.ToUserCString(40));
3973 3958
3974 // Truncation. Custom limit. 3959 // Truncation, shorter.
3975 result = Dart_GetField(lib, NewString("toolong")); 3960 result = Dart_GetField(lib, NewString("toolong"));
3976 EXPECT_VALID(result); 3961 EXPECT_VALID(result);
3977 obj ^= Api::UnwrapHandle(result); 3962 obj ^= Api::UnwrapHandle(result);
3978 EXPECT_STREQ("\"01234\"...", obj.ToUserCString(10)); 3963 EXPECT_STREQ("\"01234\"...", obj.ToUserCString(10));
3979 3964
3980 // Truncation, limit is in escape. 3965 // Truncation, limit is in escape.
3981 result = Dart_GetField(lib, NewString("toolong2")); 3966 result = Dart_GetField(lib, NewString("toolong2"));
3982 EXPECT_VALID(result); 3967 EXPECT_VALID(result);
3983 obj ^= Api::UnwrapHandle(result); 3968 obj ^= Api::UnwrapHandle(result);
3984 EXPECT_STREQ("\"0123456789012345678901234567890123\"...", 3969 EXPECT_STREQ("\"0123456789012345678901234567890123\"...",
3985 obj.ToUserCString()); 3970 obj.ToUserCString(40));
3986 3971
3987 // Truncation, limit is in u-escape 3972 // Truncation, limit is in u-escape
3988 result = Dart_GetField(lib, NewString("toolong3")); 3973 result = Dart_GetField(lib, NewString("toolong3"));
3989 EXPECT_VALID(result); 3974 EXPECT_VALID(result);
3990 obj ^= Api::UnwrapHandle(result); 3975 obj ^= Api::UnwrapHandle(result);
3991 EXPECT_STREQ("\"012345678901234567890123456789\"...", 3976 EXPECT_STREQ("\"012345678901234567890123456789\"...",
3992 obj.ToUserCString()); 3977 obj.ToUserCString(40));
3993
3994 // Instance of a class.
3995 result = Dart_GetField(lib, NewString("instance"));
3996 EXPECT_VALID(result);
3997 obj ^= Api::UnwrapHandle(result);
3998 EXPECT_STREQ("Instance of '_Cobra'", obj.ToUserCString());
3999
4000 // Empty list.
4001 result = Dart_GetField(lib, NewString("empty_list"));
4002 EXPECT_VALID(result);
4003 obj ^= Api::UnwrapHandle(result);
4004 EXPECT_STREQ("[]", obj.ToUserCString());
4005
4006 // Simple list.
4007 result = Dart_GetField(lib, NewString("simple_list"));
4008 EXPECT_VALID(result);
4009 obj ^= Api::UnwrapHandle(result);
4010 EXPECT_STREQ("[1,2,\"otter\"]", obj.ToUserCString());
4011
4012 // Nested list.
4013 result = Dart_GetField(lib, NewString("nested_list"));
4014 EXPECT_VALID(result);
4015 obj ^= Api::UnwrapHandle(result);
4016 EXPECT_STREQ("[[[[1]]],[2,\"otter\"]]", obj.ToUserCString());
4017
4018 // Deeply ested list.
4019 result = Dart_GetField(lib, NewString("deeply_nested_list"));
4020 EXPECT_VALID(result);
4021 obj ^= Api::UnwrapHandle(result);
4022 EXPECT_STREQ("[[[[[...]]]],[2,\"otter\"]]", obj.ToUserCString());
4023
4024 // Truncation.
4025 result = Dart_GetField(lib, NewString("toolong_list"));
4026 EXPECT_VALID(result);
4027 obj ^= Api::UnwrapHandle(result);
4028 EXPECT_STREQ("[\"0123456789\",\"012345\"...,...](length:4)",
4029 obj.ToUserCString());
4030
4031 // More truncation.
4032 result = Dart_GetField(lib, NewString("toolong2_list"));
4033 EXPECT_VALID(result);
4034 obj ^= Api::UnwrapHandle(result);
4035 EXPECT_STREQ("[\"012345678901234567890123456789012\"...]",
4036 obj.ToUserCString());
4037
4038 // Just fits.
4039 result = Dart_GetField(lib, NewString("justenough_list"));
4040 EXPECT_VALID(result);
4041 obj ^= Api::UnwrapHandle(result);
4042 EXPECT_STREQ("[0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,99]",
4043 obj.ToUserCString());
4044
4045 // Just too big, small elements.
4046 result = Dart_GetField(lib, NewString("toolong3_list"));
4047 EXPECT_VALID(result);
4048 obj ^= Api::UnwrapHandle(result);
4049 EXPECT_STREQ("[0,1,2,3,4,0,1,2,3,4,0,1,...](length:20)",
4050 obj.ToUserCString());
4051
4052 // Simple map.
4053 //
4054 // TODO(turnidge): Consider showing something like: {1: 2, 2: 'otter'}
4055 result = Dart_GetField(lib, NewString("simple_map"));
4056 EXPECT_VALID(result);
4057 obj ^= Api::UnwrapHandle(result);
4058 EXPECT_STREQ("Instance of '_LinkedHashMap'", obj.ToUserCString());
4059 } 3978 }
4060 3979
4061 3980
4062 class JSONTypeVerifier : public ObjectVisitor { 3981 class JSONTypeVerifier : public ObjectVisitor {
4063 public: 3982 public:
4064 JSONTypeVerifier() : ObjectVisitor(Isolate::Current()) {} 3983 JSONTypeVerifier() : ObjectVisitor(Isolate::Current()) {}
4065 virtual ~JSONTypeVerifier() { } 3984 virtual ~JSONTypeVerifier() { }
4066 virtual void VisitObject(RawObject* obj) { 3985 virtual void VisitObject(RawObject* obj) {
4067 // Free-list elements cannot even be wrapped in handles. 3986 // Free-list elements cannot even be wrapped in handles.
4068 if (obj->IsFreeListElement()) { 3987 if (obj->IsFreeListElement()) {
(...skipping 14 matching lines...) Expand all
4083 4002
4084 4003
4085 TEST_CASE(PrintToJSONStream) { 4004 TEST_CASE(PrintToJSONStream) {
4086 Heap* heap = Isolate::Current()->heap(); 4005 Heap* heap = Isolate::Current()->heap();
4087 heap->CollectAllGarbage(); 4006 heap->CollectAllGarbage();
4088 JSONTypeVerifier verifier; 4007 JSONTypeVerifier verifier;
4089 heap->IterateObjects(&verifier); 4008 heap->IterateObjects(&verifier);
4090 } 4009 }
4091 4010
4092 } // namespace dart 4011 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698