def test_options(self):
        """Test if settings are displayed properly"""

        wf._items = []

        sys.argv = ['drive.py', '']
        main(None)
        self.assertEqual(len(wf._items), 2)
        self.assertEqual(wf._items[0].title, OPTIONS[0]['title'])
        self.assertEqual(wf._items[1].title, OPTIONS[1]['title'])
        wf._items = []
    def test_invalid_options(self):
        """Test if invalid option items is displayed"""

        wf._items = []

        sys.argv = ['drive.py', '> not here']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, ERRORS['InvalidOption']['title'])
        self.assertFalse(wf._items[0].valid)
        self.assertFalse(wf._items[0].arg)
        wf._items = []
    def test_settings(self):
        """Test if settings are displayed properly"""

        wf._items = []

        sys.argv = ['drive.py', '>']
        main(None)
        self.assertEqual(len(wf._items), 4)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGIN']['title'])
        self.assertEqual(wf._items[1].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[2].title, SETTINGS['CLEAR_CACHE']['title'])
        self.assertEqual(wf._items[3].title, SETTINGS['SET_CACHE']['title'] % '[seconds]')
        wf._items = []
    def test_logout(self):
        """Test if logout item is displayed properly"""

        wf._items = []

        sys.argv = ['drive.py', '> logout']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['LOGOUT']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>logout']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['LOGOUT']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>  logout']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['LOGOUT']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>  Logout']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['LOGOUT']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>  LOGOUT']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['LOGOUT']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['LOGOUT']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []
    def test_clear_cache(self):
        """Test if clear cache item is displayed properly"""

        wf._items = []

        sys.argv = ['drive.py', '> cl']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['CLEAR_CACHE']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['CLEAR_CACHE']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> clear C']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['CLEAR_CACHE']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['CLEAR_CACHE']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>cl']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['CLEAR_CACHE']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['CLEAR_CACHE']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> clear cache']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['CLEAR_CACHE']['title'])
        self.assertEqual(wf._items[0].arg, SETTINGS['CLEAR_CACHE']['arg'])
        self.assertTrue(wf._items[0].valid)
        wf._items = []
    def test_set_cache(self):
        """Test if set cache item is displayed properly"""

        wf._items = []

        sys.argv = ['drive.py', '> set']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '[seconds]')
        self.assertFalse(wf._items[0].arg)
        self.assertFalse(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> set C']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '[seconds]')
        self.assertFalse(wf._items[0].arg)
        self.assertFalse(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '>se']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '[seconds]')
        self.assertFalse(wf._items[0].arg)
        self.assertFalse(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> set cache']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '[seconds]')
        self.assertFalse(wf._items[0].arg)
        self.assertFalse(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> Set cache length 1']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '1 second')
        self.assertEqual(wf._items[0].arg, SETTINGS['SET_CACHE']['arg'] % str(1))
        self.assertTrue(wf._items[0].valid)
        wf._items = []

        sys.argv = ['drive.py', '> Set cache length 12']
        main(None)
        self.assertEqual(len(wf._items), 1)
        self.assertEqual(wf._items[0].title, SETTINGS['SET_CACHE']['title'] % '12 seconds')
        self.assertEqual(wf._items[0].arg, SETTINGS['SET_CACHE']['arg'] % str(12))
        self.assertTrue(wf._items[0].valid)
        wf._items = []