Index: gears/base/common/database2_metadata_test.cc =================================================================== --- gears/base/common/database2_metadata_test.cc (revision 0) +++ gears/base/common/database2_metadata_test.cc (revision 0) @@ -0,0 +1,80 @@ +// Copyright 2008, Google Inc. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// 3. Neither the name of Google Inc. nor the names of its contributors may be +// used to endorse or promote products derived from this software without +// specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "gears/base/common/database2_metadata.h" +#include "gears/base/common/sqlite_wrapper.h" + +static const std::string16 kTestOrigin(STRING16(L"unittest.foo.example.com")); +static const std::string16 kTestName(STRING16(L"unittest")); + +bool TestDatabase2Metadata() { +#undef TEST_ASSERT +#define TEST_ASSERT(b) \ +{ \ + if (!(b)) { \ + LOG(("TestDatabase2Metadata - failed (%d)\n", __LINE__)); \ + return false; \ + } \ +} + SQLDatabase db; + + // create test database + TEST_ASSERT(db.Open(STRING16(L"TestDatabase2Metadata.db"))); + TEST_ASSERT(db.DropAllObjects()); + + // create table + Database2Metadata table(&db); + TEST_ASSERT(table.CreateTableVersion8()); + + // set version + std::string16 versionIn(L"1.0"); + TEST_ASSERT(table.SetVersion(kTestOrigin, kTestName, versionIn)); + + std::string16 versionOut; + bool found; + + // read version + TEST_ASSERT(table.GetVersion(kTestOrigin, kTestName, &versionOut, &found)); + TEST_ASSERT(found); + TEST_ASSERT(versionOut == versionIn); + + // update version + std::string16 newVersionIn(L"2.0"); + TEST_ASSERT(table.SetVersion(kTestOrigin, kTestName, newVersionIn)); + + TEST_ASSERT(table.GetVersion(kTestOrigin, kTestName, &versionOut, &found)); + TEST_ASSERT(found); + TEST_ASSERT(versionOut == newVersionIn); + + // read unknown origin/name + TEST_ASSERT(table.GetVersion(std::string16(L"http://unknown.example.com"), + std::string16(L"unknown"), &versionOut, &found)); + + TEST_ASSERT(!found); + + LOG(("TestDatabase2Metadata - passed\n")); + + return true; +}