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

Side by Side Diff: base/values_unittest.cc

Issue 10389088: BinaryValue does not support NULL buffer. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Explicit out-of-line destructor. Take 2. Created 8 years, 7 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 | « base/values.cc ('k') | chrome/browser/extensions/api/socket/socket_api.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 Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits> 5 #include <limits>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/string16.h" 8 #include "base/string16.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 scoped_ptr<Value> sought_value(Value::CreateIntegerValue(42)); 98 scoped_ptr<Value> sought_value(Value::CreateIntegerValue(42));
99 scoped_ptr<Value> not_found_value(Value::CreateBooleanValue(false)); 99 scoped_ptr<Value> not_found_value(Value::CreateBooleanValue(false));
100 100
101 ASSERT_NE(mixed_list->end(), mixed_list->Find(*sought_value)); 101 ASSERT_NE(mixed_list->end(), mixed_list->Find(*sought_value));
102 ASSERT_TRUE((*mixed_list->Find(*sought_value))->GetAsInteger(&int_value)); 102 ASSERT_TRUE((*mixed_list->Find(*sought_value))->GetAsInteger(&int_value));
103 ASSERT_EQ(42, int_value); 103 ASSERT_EQ(42, int_value);
104 ASSERT_EQ(mixed_list->end(), mixed_list->Find(*not_found_value)); 104 ASSERT_EQ(mixed_list->end(), mixed_list->Find(*not_found_value));
105 } 105 }
106 106
107 TEST(ValuesTest, BinaryValue) { 107 TEST(ValuesTest, BinaryValue) {
108 char* buffer = NULL; 108 // Default constructor creates a BinaryValue with a null buffer and size 0.
109 // Passing a null buffer pointer doesn't yield a BinaryValue 109 scoped_ptr<BinaryValue> binary(new BinaryValue());
110 scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0)); 110 ASSERT_TRUE(binary.get());
111 ASSERT_FALSE(binary.get()); 111 ASSERT_EQ(NULL, binary->GetBuffer());
112 ASSERT_EQ(0U, binary->GetSize());
112 113
113 // If you want to represent an empty binary value, use a zero-length buffer. 114 // Test the common case of a non-empty buffer
114 buffer = new char[1]; 115 char* buffer = new char[15];
115 ASSERT_TRUE(buffer); 116 binary.reset(new BinaryValue(scoped_ptr<char>(buffer), 15));
116 binary.reset(BinaryValue::Create(buffer, 0));
117 ASSERT_TRUE(binary.get()); 117 ASSERT_TRUE(binary.get());
118 ASSERT_TRUE(binary->GetBuffer()); 118 ASSERT_TRUE(binary->GetBuffer());
119 ASSERT_EQ(buffer, binary->GetBuffer()); 119 ASSERT_EQ(buffer, binary->GetBuffer());
120 ASSERT_EQ(0U, binary->GetSize());
121
122 // Test the common case of a non-empty buffer
123 buffer = new char[15];
124 binary.reset(BinaryValue::Create(buffer, 15));
125 ASSERT_TRUE(binary.get());
126 ASSERT_TRUE(binary->GetBuffer());
127 ASSERT_EQ(buffer, binary->GetBuffer());
128 ASSERT_EQ(15U, binary->GetSize()); 120 ASSERT_EQ(15U, binary->GetSize());
129 121
130 char stack_buffer[42]; 122 char stack_buffer[42];
131 memset(stack_buffer, '!', 42); 123 memset(stack_buffer, '!', 42);
132 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42)); 124 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42));
133 ASSERT_TRUE(binary.get()); 125 ASSERT_TRUE(binary.get());
134 ASSERT_TRUE(binary->GetBuffer()); 126 ASSERT_TRUE(binary->GetBuffer());
135 ASSERT_NE(stack_buffer, binary->GetBuffer()); 127 ASSERT_NE(stack_buffer, binary->GetBuffer());
136 ASSERT_EQ(42U, binary->GetSize()); 128 ASSERT_EQ(42U, binary->GetSize());
137 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize())); 129 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize()));
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 FundamentalValue* original_int = Value::CreateIntegerValue(42); 335 FundamentalValue* original_int = Value::CreateIntegerValue(42);
344 original_dict.Set("int", original_int); 336 original_dict.Set("int", original_int);
345 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); 337 FundamentalValue* original_double = Value::CreateDoubleValue(3.14);
346 original_dict.Set("double", original_double); 338 original_dict.Set("double", original_double);
347 StringValue* original_string = Value::CreateStringValue("hello"); 339 StringValue* original_string = Value::CreateStringValue("hello");
348 original_dict.Set("string", original_string); 340 original_dict.Set("string", original_string);
349 StringValue* original_string16 = 341 StringValue* original_string16 =
350 Value::CreateStringValue(ASCIIToUTF16("hello16")); 342 Value::CreateStringValue(ASCIIToUTF16("hello16"));
351 original_dict.Set("string16", original_string16); 343 original_dict.Set("string16", original_string16);
352 344
353 char* original_buffer = new char[42]; 345 scoped_ptr<char> original_buffer(new char[42]);
354 memset(original_buffer, '!', 42); 346 memset(original_buffer.get(), '!', 42);
355 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); 347 BinaryValue* original_binary = new BinaryValue(original_buffer.Pass(), 42);
356 original_dict.Set("binary", original_binary); 348 original_dict.Set("binary", original_binary);
357 349
358 ListValue* original_list = new ListValue(); 350 ListValue* original_list = new ListValue();
359 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); 351 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0);
360 original_list->Append(original_list_element_0); 352 original_list->Append(original_list_element_0);
361 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); 353 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1);
362 original_list->Append(original_list_element_1); 354 original_list->Append(original_list_element_1);
363 original_dict.Set("list", original_list); 355 original_dict.Set("list", original_list);
364 356
365 DictionaryValue* original_nested_dictionary = new DictionaryValue(); 357 DictionaryValue* original_nested_dictionary = new DictionaryValue();
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 FundamentalValue* original_int = Value::CreateIntegerValue(42); 543 FundamentalValue* original_int = Value::CreateIntegerValue(42);
552 original_dict.Set("int", original_int); 544 original_dict.Set("int", original_int);
553 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); 545 FundamentalValue* original_double = Value::CreateDoubleValue(3.14);
554 original_dict.Set("double", original_double); 546 original_dict.Set("double", original_double);
555 StringValue* original_string = Value::CreateStringValue("hello"); 547 StringValue* original_string = Value::CreateStringValue("hello");
556 original_dict.Set("string", original_string); 548 original_dict.Set("string", original_string);
557 StringValue* original_string16 = 549 StringValue* original_string16 =
558 Value::CreateStringValue(ASCIIToUTF16("hello16")); 550 Value::CreateStringValue(ASCIIToUTF16("hello16"));
559 original_dict.Set("string16", original_string16); 551 original_dict.Set("string16", original_string16);
560 552
561 char* original_buffer = new char[42]; 553 scoped_ptr<char> original_buffer(new char[42]);
562 memset(original_buffer, '!', 42); 554 memset(original_buffer.get(), '!', 42);
563 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); 555 BinaryValue* original_binary = new BinaryValue(original_buffer.Pass(), 42);
564 original_dict.Set("binary", original_binary); 556 original_dict.Set("binary", original_binary);
565 557
566 ListValue* original_list = new ListValue(); 558 ListValue* original_list = new ListValue();
567 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); 559 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0);
568 original_list->Append(original_list_element_0); 560 original_list->Append(original_list_element_0);
569 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); 561 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1);
570 original_list->Append(original_list_element_1); 562 original_list->Append(original_list_element_1);
571 original_dict.Set("list", original_list); 563 original_dict.Set("list", original_list);
572 564
573 Value* original_dict_value = &original_dict; 565 Value* original_dict_value = &original_dict;
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 seen2 = true; 772 seen2 = true;
781 } else { 773 } else {
782 ADD_FAILURE(); 774 ADD_FAILURE();
783 } 775 }
784 } 776 }
785 EXPECT_TRUE(seen1); 777 EXPECT_TRUE(seen1);
786 EXPECT_TRUE(seen2); 778 EXPECT_TRUE(seen2);
787 } 779 }
788 780
789 } // namespace base 781 } // namespace base
OLDNEW
« no previous file with comments | « base/values.cc ('k') | chrome/browser/extensions/api/socket/socket_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698