コード例 #1
0
ファイル: test_simpleDB.py プロジェクト: zhongyn/simpleDB
    def setUp(self):
        """
        @fn setUp
        Creates variables used by the test cases.
        """
        self.db = SimpleDB()
        self.set_a_10 = ['SET', 'a', '10']
        self.set_a_20 = ['SET', 'a', '20']
        self.set_a_30 = ['SET', 'a', '30']
        self.set_b_10 = ['SET', 'b', '10']
        self.set_b_30 = ['SET', 'b', '30']
        self.unset_a = ['UNSET', 'a']
        self.get_a = ['GET', 'a']
        self.numequalto_10 = ['NUMEQUALTO', '10']
        self.numequalto_20 = ['NUMEQUALTO', '20']
        self.numequalto_30 = ['NUMEQUALTO', '30']
        self.begin = ['BEGIN']
        self.rollback = ['ROLLBACK']
        self.commit = ['COMMIT']
        self.end = ['END']

        # Mock the func get_command() and std output
        self.patcher_get_cmd = patch('simpleDB.SimpleDB.get_command')
        self.patcher_output = patch('sys.stdout', new_callable=StringIO)
        self.mock_cmd = self.patcher_get_cmd.start()
        self.mock_output = self.patcher_output.start()
コード例 #2
0
ファイル: test_simpleDB.py プロジェクト: zhongyn/simpleDB
    def setUp(self):
        """
        @fn setUp
        Creates variables used by the test cases.
        """
        self.db = SimpleDB()
        self.set_a_10 = ['SET', 'a', '10']
        self.set_a_20 = ['SET', 'a', '20']
        self.set_a_30 = ['SET', 'a', '30']
        self.set_b_10 = ['SET', 'b', '10']
        self.set_b_30 = ['SET', 'b', '30']
        self.unset_a = ['UNSET', 'a']
        self.get_a = ['GET', 'a']
        self.numequalto_10 = ['NUMEQUALTO', '10']
        self.numequalto_20 = ['NUMEQUALTO', '20']
        self.numequalto_30 = ['NUMEQUALTO', '30']
        self.begin = ['BEGIN']
        self.rollback = ['ROLLBACK']
        self.commit = ['COMMIT']
        self.end = ['END']

        # Mock the func get_command() and std output
        self.patcher_get_cmd = patch('simpleDB.SimpleDB.get_command')
        self.patcher_output = patch('sys.stdout', new_callable=StringIO)
        self.mock_cmd = self.patcher_get_cmd.start()
        self.mock_output = self.patcher_output.start()
コード例 #3
0
ファイル: datastore.py プロジェクト: rpindulic/Quaggy
 def initialize(cls):
     # Map from username -> user data
     cls.userdata = SimpleDB({})
     # Map from buy mode -> sell mode -> history days -> id -> feature vector
     cls.cache = defaultdict(lambda: defaultdict(lambda: defaultdict(
         lambda: defaultdict(lambda: {}))))
     # Map from item type (index) -> name
     cls.item_types = ['Armor', 'Back', 'Bag', 'Consumable', 'Container', 'CraftingMaterial', \
       'Gizmo', 'Mini', 'Trinket', 'Trophy', 'UpgradeComponent', 'Weapon']
コード例 #4
0
ファイル: test_simpleDB.py プロジェクト: zhongyn/simpleDB
class SimpleDBTestCase(unittest.TestCase):
    """
    @class SimpleDBTestCase
    Test each data and transaction command and their combinations work correctly in SimpleDB. 
    """

    def setUp(self):
        """
        @fn setUp
        Creates variables used by the test cases.
        """
        self.db = SimpleDB()
        self.set_a_10 = ['SET', 'a', '10']
        self.set_a_20 = ['SET', 'a', '20']
        self.set_a_30 = ['SET', 'a', '30']
        self.set_b_10 = ['SET', 'b', '10']
        self.set_b_30 = ['SET', 'b', '30']
        self.unset_a = ['UNSET', 'a']
        self.get_a = ['GET', 'a']
        self.numequalto_10 = ['NUMEQUALTO', '10']
        self.numequalto_20 = ['NUMEQUALTO', '20']
        self.numequalto_30 = ['NUMEQUALTO', '30']
        self.begin = ['BEGIN']
        self.rollback = ['ROLLBACK']
        self.commit = ['COMMIT']
        self.end = ['END']

        # Mock the func get_command() and std output
        self.patcher_get_cmd = patch('simpleDB.SimpleDB.get_command')
        self.patcher_output = patch('sys.stdout', new_callable=StringIO)
        self.mock_cmd = self.patcher_get_cmd.start()
        self.mock_output = self.patcher_output.start()
    
    def tearDown(self):
        self.patcher_get_cmd.stop()
        self.patcher_output.stop()
    
    def test_set_get(self):
        """
        SET a 10
        GET a       => 10
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.get_a, self.end]
        self.db.run()
        self.assertEqual('10\n', self.mock_output.getvalue())

    def test_get_var_no_exist(self):
        """
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [self.get_a, self.end]
        self.db.run()
        self.assertEqual('NULL\n', self.mock_output.getvalue())

    def test_unset_var_get_NULL(self):
        """
        SET a 10
        UNSET a
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.unset_a, self.get_a, self.end]
        self.db.run()
        self.assertEqual('NULL\n', self.mock_output.getvalue())

    def test_unset_var_no_exist(self):
        """
        UNSET a
        END
        """
        self.mock_cmd.side_effect = [self.unset_a, self.end]
        self.db.run()
        self.assertEqual('', self.mock_output.getvalue())

    def test_numequalto_after_set(self):
        """
        SET a 10
        SET b 10
        NUMEQUALTO 10   => 2
        NUMEQUALTO 20   => 0
        SET b 30        
        NUMEQUALTO 10   => 1
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.set_b_10, self.numequalto_10, self.numequalto_20, self.set_b_30, self.numequalto_10, self.end]
        self.db.run()
        self.assertEqual('2\n0\n1\n', self.mock_output.getvalue())

    def test_numequalto_after_unset(self):
        """
        SET a 10
        NUMEQUALTO 10   => 1
        UNSET a
        NUMEQUALTO 10   => 0
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.numequalto_10, self.unset_a, self.numequalto_10, self.end]
        self.db.run()
        self.assertEqual('1\n0\n', self.mock_output.getvalue())

    def test_begin_rollback_twice(self):
        """
        BEGIN
        SET a 10
        GET a       => 10
        BEGIN
        SET a 20
        GET a       => 20
        ROLLBACK
        GET a       => 10
        ROLLBACK
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [self.begin, self.set_a_10, self.get_a, self.begin, self.set_a_20, self.get_a, self.rollback, self.get_a, self.rollback, self.get_a, self.end]
        self.db.run()
        self.assertEqual('10\n20\n10\nNULL\n', self.mock_output.getvalue())


    def test_begin_commit_rollback(self):
        """
        BEGIN
        SET a 10
        BEGIN
        SET a 20
        COMMIT
        GET a       => 20
        ROLLBACK    => NO TRANSACTION
        END
        """
        self.mock_cmd.side_effect = [self.begin, self.set_a_10, self.begin, self.set_a_20, self.commit, self.get_a, self.rollback, self.end]
        self.db.run()
        self.assertEqual('20\nNO TRANSACTION\n', self.mock_output.getvalue())

    def test_commit_no_transaction(self):
        """
        SET a 10
        COMMIT      => NO TRANSACTION
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.commit, self.end]
        self.db.run()
        self.assertEqual('NO TRANSACTION\n', self.mock_output.getvalue())

    def test_unset_rollback_commit(self):
        """
        SET a 10
        BEGIN
        GET a       => 10
        SET a 20
        BEGIN
        UNSET a
        GET a       => NULL
        ROLLBACK
        GET a       => 20
        COMMIT
        GET a       => 20
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.begin, self.get_a, self.set_a_20, self.begin, self.unset_a, self.get_a, self.rollback, self.get_a, self.commit, self.get_a, self.end]
        self.db.run()
        self.assertEqual('10\nNULL\n20\n20\n', self.mock_output.getvalue())

    def test_numequalto_after_unset_rollback(self):
        """
        SET a 10
        BEGIN
        NUMEQUALTO 10   => 1
        BEGIN
        UNSET a
        NUMEQUALTO 10   => 0
        ROLLBACK
        NUMEQUALTO 10   => 1
        COMMIT
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.begin, self.numequalto_10, self.begin, self.unset_a, self.numequalto_10, self.rollback, self.numequalto_10, self.commit, self.end]
        self.db.run()
        self.assertEqual('1\n0\n1\n', self.mock_output.getvalue())

    def test_numequalto_after_commit(self):
        """
        SET a 10
        BEGIN
        SET a 20
        BEGIN
        SET a 30
        COMMIT
        NUMEQUALTO 10   => 0
        NUMEQUALTO 20   => 0
        NUMEQUALTO 30   => 1
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.begin, self.set_a_20, self.begin, self.set_a_30, self.commit, self.numequalto_10, self.numequalto_20, self.numequalto_30, self.end]
        self.db.run()
        self.assertEqual('0\n0\n1\n', self.mock_output.getvalue())
コード例 #5
0
ファイル: test_simpleDB.py プロジェクト: zhongyn/simpleDB
class SimpleDBTestCase(unittest.TestCase):
    """
    @class SimpleDBTestCase
    Test each data and transaction command and their combinations work correctly in SimpleDB. 
    """
    def setUp(self):
        """
        @fn setUp
        Creates variables used by the test cases.
        """
        self.db = SimpleDB()
        self.set_a_10 = ['SET', 'a', '10']
        self.set_a_20 = ['SET', 'a', '20']
        self.set_a_30 = ['SET', 'a', '30']
        self.set_b_10 = ['SET', 'b', '10']
        self.set_b_30 = ['SET', 'b', '30']
        self.unset_a = ['UNSET', 'a']
        self.get_a = ['GET', 'a']
        self.numequalto_10 = ['NUMEQUALTO', '10']
        self.numequalto_20 = ['NUMEQUALTO', '20']
        self.numequalto_30 = ['NUMEQUALTO', '30']
        self.begin = ['BEGIN']
        self.rollback = ['ROLLBACK']
        self.commit = ['COMMIT']
        self.end = ['END']

        # Mock the func get_command() and std output
        self.patcher_get_cmd = patch('simpleDB.SimpleDB.get_command')
        self.patcher_output = patch('sys.stdout', new_callable=StringIO)
        self.mock_cmd = self.patcher_get_cmd.start()
        self.mock_output = self.patcher_output.start()

    def tearDown(self):
        self.patcher_get_cmd.stop()
        self.patcher_output.stop()

    def test_set_get(self):
        """
        SET a 10
        GET a       => 10
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.get_a, self.end]
        self.db.run()
        self.assertEqual('10\n', self.mock_output.getvalue())

    def test_get_var_no_exist(self):
        """
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [self.get_a, self.end]
        self.db.run()
        self.assertEqual('NULL\n', self.mock_output.getvalue())

    def test_unset_var_get_NULL(self):
        """
        SET a 10
        UNSET a
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.unset_a, self.get_a, self.end
        ]
        self.db.run()
        self.assertEqual('NULL\n', self.mock_output.getvalue())

    def test_unset_var_no_exist(self):
        """
        UNSET a
        END
        """
        self.mock_cmd.side_effect = [self.unset_a, self.end]
        self.db.run()
        self.assertEqual('', self.mock_output.getvalue())

    def test_numequalto_after_set(self):
        """
        SET a 10
        SET b 10
        NUMEQUALTO 10   => 2
        NUMEQUALTO 20   => 0
        SET b 30        
        NUMEQUALTO 10   => 1
        END
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.set_b_10, self.numequalto_10,
            self.numequalto_20, self.set_b_30, self.numequalto_10, self.end
        ]
        self.db.run()
        self.assertEqual('2\n0\n1\n', self.mock_output.getvalue())

    def test_numequalto_after_unset(self):
        """
        SET a 10
        NUMEQUALTO 10   => 1
        UNSET a
        NUMEQUALTO 10   => 0
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.numequalto_10, self.unset_a,
            self.numequalto_10, self.end
        ]
        self.db.run()
        self.assertEqual('1\n0\n', self.mock_output.getvalue())

    def test_begin_rollback_twice(self):
        """
        BEGIN
        SET a 10
        GET a       => 10
        BEGIN
        SET a 20
        GET a       => 20
        ROLLBACK
        GET a       => 10
        ROLLBACK
        GET a       => NULL
        END
        """
        self.mock_cmd.side_effect = [
            self.begin, self.set_a_10, self.get_a, self.begin, self.set_a_20,
            self.get_a, self.rollback, self.get_a, self.rollback, self.get_a,
            self.end
        ]
        self.db.run()
        self.assertEqual('10\n20\n10\nNULL\n', self.mock_output.getvalue())

    def test_begin_commit_rollback(self):
        """
        BEGIN
        SET a 10
        BEGIN
        SET a 20
        COMMIT
        GET a       => 20
        ROLLBACK    => NO TRANSACTION
        END
        """
        self.mock_cmd.side_effect = [
            self.begin, self.set_a_10, self.begin, self.set_a_20, self.commit,
            self.get_a, self.rollback, self.end
        ]
        self.db.run()
        self.assertEqual('20\nNO TRANSACTION\n', self.mock_output.getvalue())

    def test_commit_no_transaction(self):
        """
        SET a 10
        COMMIT      => NO TRANSACTION
        END
        """
        self.mock_cmd.side_effect = [self.set_a_10, self.commit, self.end]
        self.db.run()
        self.assertEqual('NO TRANSACTION\n', self.mock_output.getvalue())

    def test_unset_rollback_commit(self):
        """
        SET a 10
        BEGIN
        GET a       => 10
        SET a 20
        BEGIN
        UNSET a
        GET a       => NULL
        ROLLBACK
        GET a       => 20
        COMMIT
        GET a       => 20
        END
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.begin, self.get_a, self.set_a_20, self.begin,
            self.unset_a, self.get_a, self.rollback, self.get_a, self.commit,
            self.get_a, self.end
        ]
        self.db.run()
        self.assertEqual('10\nNULL\n20\n20\n', self.mock_output.getvalue())

    def test_numequalto_after_unset_rollback(self):
        """
        SET a 10
        BEGIN
        NUMEQUALTO 10   => 1
        BEGIN
        UNSET a
        NUMEQUALTO 10   => 0
        ROLLBACK
        NUMEQUALTO 10   => 1
        COMMIT
        END
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.begin, self.numequalto_10, self.begin,
            self.unset_a, self.numequalto_10, self.rollback,
            self.numequalto_10, self.commit, self.end
        ]
        self.db.run()
        self.assertEqual('1\n0\n1\n', self.mock_output.getvalue())

    def test_numequalto_after_commit(self):
        """
        SET a 10
        BEGIN
        SET a 20
        BEGIN
        SET a 30
        COMMIT
        NUMEQUALTO 10   => 0
        NUMEQUALTO 20   => 0
        NUMEQUALTO 30   => 1
        END
        """
        self.mock_cmd.side_effect = [
            self.set_a_10, self.begin, self.set_a_20, self.begin,
            self.set_a_30, self.commit, self.numequalto_10, self.numequalto_20,
            self.numequalto_30, self.end
        ]
        self.db.run()
        self.assertEqual('0\n0\n1\n', self.mock_output.getvalue())