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