1#!/usr/bin/env python
2# Copyright 2013 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6from test_object_store import TestObjectStore
7import unittest
8
9class TestObjectStoreTest(unittest.TestCase):
10  def testEmpty(self):
11    store = TestObjectStore('namespace')
12    self.assertEqual(None, store.Get('hi').Get())
13    self.assertEqual({}, store.GetMulti(['hi', 'lo']).Get())
14
15  def testNonEmpty(self):
16    store = TestObjectStore('namespace')
17    store.Set('hi', 'bye')
18    self.assertEqual('bye', store.Get('hi').Get())
19    self.assertEqual({'hi': 'bye'}, store.GetMulti(['hi', 'lo']).Get())
20    store.Set('hi', 'blah')
21    self.assertEqual('blah', store.Get('hi').Get())
22    self.assertEqual({'hi': 'blah'}, store.GetMulti(['hi', 'lo']).Get())
23    store.Del('hi')
24    self.assertEqual(None, store.Get('hi').Get())
25    self.assertEqual({}, store.GetMulti(['hi', 'lo']).Get())
26
27  def testCheckAndReset(self):
28    store = TestObjectStore('namespace')
29    store.Set('x', 'y')
30    self.assertTrue(*store.CheckAndReset(set_count=1))
31    store.Set('x', 'y')
32    store.Set('x', 'y')
33    self.assertTrue(*store.CheckAndReset(set_count=2))
34    store.Set('x', 'y')
35    store.Set('x', 'y')
36    store.Get('x').Get()
37    store.Get('x').Get()
38    store.Get('x').Get()
39    store.Del('x')
40    self.assertTrue(*store.CheckAndReset(get_count=3, set_count=2, del_count=1))
41
42if __name__ == '__main__':
43  unittest.main()
44