// Copyright 2013 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 "chrome/browser/extensions/api/identity/extension_token_key.h" #include <algorithm> #include <set> #include <string> #include <vector> #include "testing/gtest/include/gtest/gtest.h" TEST(IdentityExtensionTokenKeyTest, Ordering) { std::string extension_id1("ext_id_1"); std::string extension_id2("ext_id_2"); std::set<std::string> scopes1; std::set<std::string> scopes2; std::set<std::string> scopes3; scopes1.insert("a"); scopes1.insert("b"); scopes2.insert("a"); std::vector<std::string> extension_ids; extension_ids.push_back(extension_id1); extension_ids.push_back(extension_id2); std::vector<std::string> user_ids; user_ids.push_back("user_id_1"); user_ids.push_back("user_id_2"); std::vector<std::set<std::string> > scopesets; scopesets.push_back(scopes1); scopesets.push_back(scopes2); scopesets.push_back(scopes3); std::vector<extensions::ExtensionTokenKey> keys; typedef std::vector<extensions::ExtensionTokenKey>::const_iterator ExtensionTokenKeyIterator; std::vector<std::string>::const_iterator extension_it; std::vector<std::string>::const_iterator user_it; std::vector<std::set<std::string> >::const_iterator scope_it; for (extension_it = extension_ids.begin(); extension_it != extension_ids.end(); ++extension_it) { for (user_it = user_ids.begin(); user_it != user_ids.end(); ++user_it) { for (scope_it = scopesets.begin(); scope_it != scopesets.end(); ++scope_it) { keys.push_back( extensions::ExtensionTokenKey(*extension_it, *user_it, *scope_it)); } } } // keys should not be less than themselves for (ExtensionTokenKeyIterator it = keys.begin(); it != keys.end(); ++it) { EXPECT_FALSE(*it < *it); } // comparison should establish an ordering std::sort(keys.begin(), keys.end()); for (ExtensionTokenKeyIterator it1 = keys.begin(); it1 != keys.end(); ++it1) { ExtensionTokenKeyIterator it2 = it1; for (++it2; it2 != keys.end(); ++it2) { EXPECT_LT(*it1, *it2); EXPECT_FALSE(it2 < it1); } } }