| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/values.h" | 7 #include "base/values.h" |
| 8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 class ValuesTest: public testing::Test { | 11 class ValuesTest: public testing::Test { |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 ASSERT_EQ(std::wstring(L"narrow"), wide); | 142 ASSERT_EQ(std::wstring(L"narrow"), wide); |
| 143 ASSERT_TRUE(wide_value->GetAsString(&narrow)); | 143 ASSERT_TRUE(wide_value->GetAsString(&narrow)); |
| 144 ASSERT_TRUE(wide_value->GetAsString(&wide)); | 144 ASSERT_TRUE(wide_value->GetAsString(&wide)); |
| 145 ASSERT_EQ(std::string("wide"), narrow); | 145 ASSERT_EQ(std::string("wide"), narrow); |
| 146 ASSERT_EQ(std::wstring(L"wide"), wide); | 146 ASSERT_EQ(std::wstring(L"wide"), wide); |
| 147 } | 147 } |
| 148 | 148 |
| 149 // This is a Value object that allows us to tell if it's been | 149 // This is a Value object that allows us to tell if it's been |
| 150 // properly deleted by modifying the value of external flag on destruction. | 150 // properly deleted by modifying the value of external flag on destruction. |
| 151 class DeletionTestValue : public Value { | 151 class DeletionTestValue : public Value { |
| 152 public: | 152 public: |
| 153 DeletionTestValue(bool* deletion_flag) : Value(TYPE_NULL) { | 153 DeletionTestValue(bool* deletion_flag) : Value(TYPE_NULL) { |
| 154 Init(deletion_flag); // Separate function so that we can use ASSERT_* | 154 Init(deletion_flag); // Separate function so that we can use ASSERT_* |
| 155 } | 155 } |
| 156 | 156 |
| 157 void Init(bool* deletion_flag) { | 157 void Init(bool* deletion_flag) { |
| 158 ASSERT_TRUE(deletion_flag); | 158 ASSERT_TRUE(deletion_flag); |
| 159 deletion_flag_ = deletion_flag; | 159 deletion_flag_ = deletion_flag; |
| 160 *deletion_flag_ = false; | 160 *deletion_flag_ = false; |
| 161 } | 161 } |
| 162 | 162 |
| 163 ~DeletionTestValue() { | 163 ~DeletionTestValue() { |
| 164 *deletion_flag_ = true; | 164 *deletion_flag_ = true; |
| 165 } | 165 } |
| 166 | 166 |
| 167 private: | 167 private: |
| 168 bool* deletion_flag_; | 168 bool* deletion_flag_; |
| 169 }; | 169 }; |
| 170 | 170 |
| 171 TEST(ValuesTest, ListDeletion) { | 171 TEST(ValuesTest, ListDeletion) { |
| 172 bool deletion_flag = true; | 172 bool deletion_flag = true; |
| 173 | 173 |
| 174 { | 174 { |
| 175 ListValue list; | 175 ListValue list; |
| 176 list.Append(new DeletionTestValue(&deletion_flag)); | 176 list.Append(new DeletionTestValue(&deletion_flag)); |
| 177 EXPECT_FALSE(deletion_flag); | 177 EXPECT_FALSE(deletion_flag); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); | 305 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); |
| 306 original_dict.Set(L"binary", original_binary); | 306 original_dict.Set(L"binary", original_binary); |
| 307 | 307 |
| 308 ListValue* original_list = new ListValue(); | 308 ListValue* original_list = new ListValue(); |
| 309 Value* original_list_element_0 = Value::CreateIntegerValue(0); | 309 Value* original_list_element_0 = Value::CreateIntegerValue(0); |
| 310 original_list->Append(original_list_element_0); | 310 original_list->Append(original_list_element_0); |
| 311 Value* original_list_element_1 = Value::CreateIntegerValue(1); | 311 Value* original_list_element_1 = Value::CreateIntegerValue(1); |
| 312 original_list->Append(original_list_element_1); | 312 original_list->Append(original_list_element_1); |
| 313 original_dict.Set(L"list", original_list); | 313 original_dict.Set(L"list", original_list); |
| 314 | 314 |
| 315 DictionaryValue* copy_dict = | 315 scoped_ptr<DictionaryValue> copy_dict( |
| 316 static_cast<DictionaryValue*>(original_dict.DeepCopy()); | 316 static_cast<DictionaryValue*>(original_dict.DeepCopy())); |
| 317 ASSERT_TRUE(copy_dict); | 317 ASSERT_TRUE(copy_dict.get()); |
| 318 ASSERT_NE(copy_dict, &original_dict); | 318 ASSERT_NE(copy_dict.get(), &original_dict); |
| 319 | 319 |
| 320 Value* copy_null = NULL; | 320 Value* copy_null = NULL; |
| 321 ASSERT_TRUE(copy_dict->Get(L"null", ©_null)); | 321 ASSERT_TRUE(copy_dict->Get(L"null", ©_null)); |
| 322 ASSERT_TRUE(copy_null); | 322 ASSERT_TRUE(copy_null); |
| 323 ASSERT_NE(copy_null, original_null); | 323 ASSERT_NE(copy_null, original_null); |
| 324 ASSERT_TRUE(copy_null->IsType(Value::TYPE_NULL)); | 324 ASSERT_TRUE(copy_null->IsType(Value::TYPE_NULL)); |
| 325 | 325 |
| 326 Value* copy_bool = NULL; | 326 Value* copy_bool = NULL; |
| 327 ASSERT_TRUE(copy_dict->Get(L"bool", ©_bool)); | 327 ASSERT_TRUE(copy_dict->Get(L"bool", ©_bool)); |
| 328 ASSERT_TRUE(copy_bool); | 328 ASSERT_TRUE(copy_bool); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 ASSERT_TRUE(copy_list_element_0->GetAsInteger(©_list_element_0_value)); | 401 ASSERT_TRUE(copy_list_element_0->GetAsInteger(©_list_element_0_value)); |
| 402 ASSERT_EQ(0, copy_list_element_0_value); | 402 ASSERT_EQ(0, copy_list_element_0_value); |
| 403 | 403 |
| 404 Value* copy_list_element_1; | 404 Value* copy_list_element_1; |
| 405 ASSERT_TRUE(copy_list->Get(1, ©_list_element_1)); | 405 ASSERT_TRUE(copy_list->Get(1, ©_list_element_1)); |
| 406 ASSERT_TRUE(copy_list_element_1); | 406 ASSERT_TRUE(copy_list_element_1); |
| 407 ASSERT_NE(copy_list_element_1, original_list_element_1); | 407 ASSERT_NE(copy_list_element_1, original_list_element_1); |
| 408 int copy_list_element_1_value; | 408 int copy_list_element_1_value; |
| 409 ASSERT_TRUE(copy_list_element_1->GetAsInteger(©_list_element_1_value)); | 409 ASSERT_TRUE(copy_list_element_1->GetAsInteger(©_list_element_1_value)); |
| 410 ASSERT_EQ(1, copy_list_element_1_value); | 410 ASSERT_EQ(1, copy_list_element_1_value); |
| 411 | |
| 412 delete copy_dict; | |
| 413 } | 411 } |
| 414 | 412 |
| 415 TEST(ValuesTest, Equals) { | 413 TEST(ValuesTest, Equals) { |
| 416 Value* null1 = Value::CreateNullValue(); | 414 Value* null1 = Value::CreateNullValue(); |
| 417 Value* null2 = Value::CreateNullValue(); | 415 Value* null2 = Value::CreateNullValue(); |
| 418 EXPECT_NE(null1, null2); | 416 EXPECT_NE(null1, null2); |
| 419 EXPECT_TRUE(null1->Equals(null2)); | 417 EXPECT_TRUE(null1->Equals(null2)); |
| 420 | 418 |
| 421 Value* boolean = Value::CreateBooleanValue(false); | 419 Value* boolean = Value::CreateBooleanValue(false); |
| 422 EXPECT_FALSE(null1->Equals(boolean)); | 420 EXPECT_FALSE(null1->Equals(boolean)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 441 dv.Set(L"f", list); | 439 dv.Set(L"f", list); |
| 442 | 440 |
| 443 EXPECT_FALSE(dv.Equals(copy)); | 441 EXPECT_FALSE(dv.Equals(copy)); |
| 444 copy->Set(L"f", list->DeepCopy()); | 442 copy->Set(L"f", list->DeepCopy()); |
| 445 EXPECT_TRUE(dv.Equals(copy)); | 443 EXPECT_TRUE(dv.Equals(copy)); |
| 446 | 444 |
| 447 list->Append(Value::CreateBooleanValue(true)); | 445 list->Append(Value::CreateBooleanValue(true)); |
| 448 EXPECT_FALSE(dv.Equals(copy)); | 446 EXPECT_FALSE(dv.Equals(copy)); |
| 449 delete copy; | 447 delete copy; |
| 450 } | 448 } |
| OLD | NEW |