Chromium Code Reviews| Index: remoting/host/server_log_entry_unittest.cc |
| diff --git a/remoting/host/server_log_entry_unittest.cc b/remoting/host/server_log_entry_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..685192713b4352857f5520ef5ba61818c35c5d15 |
| --- /dev/null |
| +++ b/remoting/host/server_log_entry_unittest.cc |
| @@ -0,0 +1,103 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "remoting/host/server_log_entry.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| +#include "third_party/libjingle/source/talk/xmllite/xmlelement.h" |
| + |
| +using buzz::XmlAttr; |
| +using buzz::XmlElement; |
| + |
| +namespace remoting { |
| + |
| +class ServerLogEntryTest : public testing::Test { |
| + protected: |
| + // Verifies a logging stanza. |
| + // |keyValuePairs| lists the keys that must have specified values, and |keys| |
| + // lists the keys that must be present, but may have arbitrary values. |
| + // There must be no other keys. |
| + static bool verifyStanza( |
|
Sergey Ulanov
2011/11/22 02:01:43
nit:VerifyStanza
simonmorris
2011/11/22 23:27:35
Done.
|
| + const std::map<std::string, std::string>& keyValuePairs, |
|
Sergey Ulanov
2011/11/22 02:01:43
nit:key_value_pair
simonmorris
2011/11/22 23:27:35
Done.
|
| + const std::set<std::string> keys, |
| + const XmlElement* elem, |
| + std::string* error) { |
| + int attrCount = 0; |
| + for (const XmlAttr* attr = elem->FirstAttr(); attr != NULL; |
| + attr = attr->NextAttr(), attrCount++) { |
| + if (attr->Name().Namespace().length() != 0) { |
| + *error = "attribute has non-empty namespace " |
| + + attr->Name().Namespace(); |
|
Sergey Ulanov
2011/11/22 02:01:43
nit: + must be on the previous line. We have diffe
simonmorris
2011/11/22 23:27:35
Done.
|
| + return false; |
| + } |
| + const std::string& key = attr->Name().LocalPart(); |
| + const std::string& value = attr->Value(); |
| + std::map<std::string, std::string>::const_iterator iter = |
| + keyValuePairs.find(key); |
| + if (iter == keyValuePairs.end()) { |
| + if (keys.find(key) == keys.end()) { |
| + *error = "unexpected attribute " + key; |
| + return false; |
| + } |
| + } else { |
| + if (iter->second != value) { |
| + *error = "attribute " + key + " has value " + iter->second |
| + + ": expected " + value; |
|
Sergey Ulanov
2011/11/22 02:01:43
nit: + must be on the previous line.
simonmorris
2011/11/22 23:27:35
Done.
|
| + return false; |
| + } |
| + } |
| + } |
| + int attrCountExpected = keyValuePairs.size() + keys.size(); |
|
Sergey Ulanov
2011/11/22 02:01:43
attr_count_expected
simonmorris
2011/11/22 23:27:35
Done.
|
| + if (attrCount != attrCountExpected) { |
| + std::stringstream s; |
| + s << "stanza has " << attrCount << " keys: expected " |
| + << attrCountExpected; |
| + *error = s.str(); |
| + return false; |
| + } |
| + return true; |
| + } |
| +}; |
| + |
| +TEST_F(ServerLogEntryTest, MakeSessionStateChange) { |
| + scoped_ptr<ServerLogEntry> entry( |
| + ServerLogEntry::MakeSessionStateChange(true)); |
| + scoped_ptr<XmlElement> stanza(entry->ToStanza()); |
| + std::string error; |
| + std::map<std::string, std::string> keyValuePairs; |
|
Sergey Ulanov
2011/11/22 02:01:43
not: key_value_pairs
simonmorris
2011/11/22 23:27:35
Done.
|
| + keyValuePairs["role"] = "host"; |
| + keyValuePairs["event-name"] = "session-state"; |
| + keyValuePairs["session-state"] = "connected"; |
| + std::set<std::string> keys; |
| + ASSERT_TRUE(verifyStanza(keyValuePairs, keys, stanza.get(), &error)) << error; |
| +} |
| + |
| +TEST_F(ServerLogEntryTest, AddHostFields) { |
| + scoped_ptr<ServerLogEntry> entry( |
| + ServerLogEntry::MakeSessionStateChange(true)); |
| + entry->AddHostFields(); |
| + scoped_ptr<XmlElement> stanza(entry->ToStanza()); |
| + std::string error; |
| + std::map<std::string, std::string> keyValuePairs; |
|
Sergey Ulanov
2011/11/22 02:01:43
same here
simonmorris
2011/11/22 23:27:35
Done.
|
| + keyValuePairs["role"] = "host"; |
| + keyValuePairs["event-name"] = "session-state"; |
| + keyValuePairs["session-state"] = "connected"; |
| + std::set<std::string> keys; |
| + keys.insert("cpu"); |
| +#if defined(OS_WIN) |
| + keyValuePairs["os-name"] = "Windows"; |
| + keys.insert("os-version"); |
| +#elif defined(OS_MACOSX) |
| + keyValuePairs["os-name"] = "Mac"; |
| + keys.insert("os-version"); |
| +#elif defined(OS_CHROMEOS) |
| + keyValuePairs["os-name"] = "ChromeOS"; |
| + keys.insert("os-version"); |
| +#elif defined(OS_LINUX) |
| + keyValuePairs["os-name"] = "Linux"; |
| +#endif |
| + ASSERT_TRUE(verifyStanza(keyValuePairs, keys, stanza.get(), &error)) << error; |
| +} |
| + |
| +} // namespace remoting |