1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "config.h" 6#include "DictionaryTest.h" 7 8#include "core/testing/InternalDictionary.h" 9 10namespace blink { 11 12DictionaryTest::DictionaryTest() 13{ 14} 15 16DictionaryTest::~DictionaryTest() 17{ 18} 19 20void DictionaryTest::set(const InternalDictionary& testingDictionary) 21{ 22 reset(); 23 if (testingDictionary.hasLongMember()) 24 m_longMember = testingDictionary.longMember(); 25 m_longMemberWithDefault = testingDictionary.longMemberWithDefault(); 26 if (testingDictionary.hasLongOrNullMember()) 27 m_longOrNullMember = testingDictionary.longOrNullMember(); 28 // |longOrNullMemberWithDefault| has a default value but can be null, so 29 // we need to check availability. 30 if (testingDictionary.hasLongOrNullMemberWithDefault()) 31 m_longOrNullMemberWithDefault = testingDictionary.longOrNullMemberWithDefault(); 32 if (testingDictionary.hasBooleanMember()) 33 m_booleanMember = testingDictionary.booleanMember(); 34 if (testingDictionary.hasDoubleMember()) 35 m_doubleMember = testingDictionary.doubleMember(); 36 m_stringMember = testingDictionary.stringMember(); 37 m_stringMemberWithDefault = testingDictionary.stringMemberWithDefault(); 38 if (testingDictionary.hasStringSequenceMember()) 39 m_stringSequenceMember = testingDictionary.stringSequenceMember(); 40 if (testingDictionary.hasStringSequenceOrNullMember()) 41 m_stringSequenceOrNullMember = testingDictionary.stringSequenceOrNullMember(); 42 m_enumMember = testingDictionary.enumMember(); 43 m_enumMemberWithDefault = testingDictionary.enumMemberWithDefault(); 44 m_enumOrNullMember = testingDictionary.enumOrNullMember(); 45 if (testingDictionary.hasElementMember()) 46 m_elementMember = testingDictionary.elementMember(); 47 if (testingDictionary.hasElementOrNullMember()) 48 m_elementOrNullMember = testingDictionary.elementOrNullMember(); 49 m_objectMember = testingDictionary.objectMember(); 50 m_objectOrNullMemberWithDefault = testingDictionary.objectOrNullMemberWithDefault(); 51} 52 53InternalDictionary* DictionaryTest::get() 54{ 55 InternalDictionary* result = InternalDictionary::create(); 56 if (m_longMember) 57 result->setLongMember(m_longMember.get()); 58 result->setLongMemberWithDefault(m_longMemberWithDefault); 59 if (m_longOrNullMember) 60 result->setLongOrNullMember(m_longOrNullMember.get()); 61 if (m_longOrNullMemberWithDefault) 62 result->setLongOrNullMemberWithDefault(m_longOrNullMemberWithDefault.get()); 63 if (m_booleanMember) 64 result->setBooleanMember(m_booleanMember.get()); 65 if (m_doubleMember) 66 result->setDoubleMember(m_doubleMember.get()); 67 result->setStringMember(m_stringMember); 68 result->setStringMemberWithDefault(m_stringMemberWithDefault); 69 if (m_stringSequenceMember) 70 result->setStringSequenceMember(m_stringSequenceMember.get()); 71 if (m_stringSequenceOrNullMember) 72 result->setStringSequenceOrNullMember(m_stringSequenceOrNullMember.get()); 73 result->setEnumMember(m_enumMember); 74 result->setEnumMemberWithDefault(m_enumMemberWithDefault); 75 result->setEnumOrNullMember(m_enumOrNullMember); 76 if (m_elementMember) 77 result->setElementMember(m_elementMember); 78 if (m_elementOrNullMember) 79 result->setElementOrNullMember(m_elementOrNullMember); 80 result->setObjectMember(m_objectMember); 81 result->setObjectOrNullMemberWithDefault(m_objectOrNullMemberWithDefault); 82 return result; 83} 84 85void DictionaryTest::reset() 86{ 87 m_longMember = Nullable<int>(); 88 m_longMemberWithDefault = -1; // This value should not be returned. 89 m_longOrNullMember = Nullable<int>(); 90 m_longOrNullMemberWithDefault = Nullable<int>(); 91 m_booleanMember = Nullable<bool>(); 92 m_doubleMember = Nullable<double>(); 93 m_stringMember = String(); 94 m_stringMemberWithDefault = String("Should not be returned"); 95 m_stringSequenceMember = Nullable<Vector<String> >(); 96 m_stringSequenceOrNullMember = Nullable<Vector<String> >(); 97 m_enumMember = String(); 98 m_enumMemberWithDefault = String(); 99 m_enumOrNullMember = String(); 100 m_elementMember = nullptr; 101 m_elementOrNullMember = nullptr; 102 m_objectMember = ScriptValue(); 103 m_objectOrNullMemberWithDefault = ScriptValue(); 104} 105 106void DictionaryTest::trace(Visitor* visitor) 107{ 108 visitor->trace(m_elementMember); 109 visitor->trace(m_elementOrNullMember); 110} 111 112} 113