Chromium Code Reviews| Index: appengine/findit/crash/test/flag_manager_test.py |
| diff --git a/appengine/findit/crash/test/flag_manager_test.py b/appengine/findit/crash/test/flag_manager_test.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d00e529cdea2094d97991c2078110af18a391d1a |
| --- /dev/null |
| +++ b/appengine/findit/crash/test/flag_manager_test.py |
| @@ -0,0 +1,123 @@ |
| +# Copyright 2016 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. |
| + |
| +from crash.flag_manager import ParsingFlag |
| +from crash.flag_manager import FlagManager |
| +from crash.test.stacktrace_test_suite import StacktraceTestSuite |
| + |
| + |
| +class ParsingFlagTest(StacktraceTestSuite): |
| + |
| + def setUp(self): |
| + super(ParsingFlagTest, self).setUp() |
| + self.flag = ParsingFlag('test_flag', lambda line: 'turn on flag' in line, |
| + value=False) |
| + |
| + def testParsingFlagNameProperty(self): |
| + """Tests name property of ``ParsingFlag``""" |
|
wrengr
2016/12/28 23:34:10
"name property" -> "the ``name`` property"
Sharu Jiang
2016/12/29 18:20:22
Done.
|
| + self.assertEqual(self.flag.name, 'test_flag') |
| + |
| + def testParsingFlagValueProperty(self): |
| + """Tests value property of ``ParsingFlag``""" |
|
wrengr
2016/12/28 23:34:10
"value property" -> "the ``value`` property"
Sharu Jiang
2016/12/29 18:20:22
Done.
|
| + self.assertFalse(self.flag.value) |
| + self.flag.On() |
| + self.assertTrue(self.flag.value) |
| + self.assertTrue(bool(self.flag)) |
| + self.flag.Off() |
| + self.assertFalse(self.flag.value) |
| + self.assertFalse(bool(self.flag)) |
| + |
| + def testConditionallyTurOn(self): |
| + """Tests that ``ConditionallyTurnOn`` turns on flag if condiions met.""" |
|
wrengr
2016/12/28 23:34:10
"condiions" -> "conditions"
Sharu Jiang
2016/12/29 18:20:22
Done.
|
| + self.assertFalse(bool(self.flag)) |
| + self.flag.ConditionallyTurnOn('line: turn on flag') |
| + self.assertTrue(bool(self.flag)) |
| + |
| + |
| +class FlagManagerTest(StacktraceTestSuite): |
| + |
| + def setUp(self): |
| + super(FlagManagerTest, self).setUp() |
| + self.flag_manager = FlagManager() |
| + |
| + def testClearFlags(self): |
| + """Tests that ``ClearFlags`` deletes all flags.""" |
| + self.flag_manager.Register('test', ParsingFlag('test_flag', value=True)) |
| + self.assertEqual(len(self.flag_manager.flags), 1) |
| + self.flag_manager.ClearFlags() |
| + self.assertEqual(len(self.flag_manager.flags), 0) |
| + |
| + def testRegister(self): |
| + """Tests that ``Register`` add new flags with a certain group.""" |
| + self.flag_manager.Register('dummy', ParsingFlag('dummy_flag', value=True)) |
| + self.assertEqual(len(self.flag_manager.flag_groups['dummy']), 1) |
| + self.assertEqual(len(self.flag_manager.flags), 1) |
| + |
| + def testGetAllFlags(self): |
| + """Tests that ``GetAllFlags`` returns all registered flags.""" |
| + flag1 = ParsingFlag('group_flag1', value=True) |
| + flag2 = ParsingFlag('group_flag2', value=True) |
| + self.flag_manager.Register('group1', flag1) |
| + self.flag_manager.Register('group2', flag2) |
| + self.assertListEqual(self.flag_manager.GetAllFlags(), [flag1, flag2]) |
| + |
| + def testGetGroupFlags(self): |
| + """Tests that ``GetGroupFlags`` returns all flags with a certain group.""" |
| + flag1 = ParsingFlag('group_flag1', value=True) |
| + flag2 = ParsingFlag('group_flag2', value=True) |
| + self.flag_manager.Register('group1', flag1) |
| + self.flag_manager.Register('group2', flag2) |
| + self.assertListEqual(self.flag_manager.GetGroupFlags('group1'), [flag1]) |
| + self.assertListEqual(self.flag_manager.GetGroupFlags('group2'), [flag2]) |
| + |
| + def testResetAllFlags(self): |
| + """Tests that ``ResetAllFlags`` turns off all the flags.""" |
| + self.flag_manager.Register('group', ParsingFlag('dummy_flag1', value=True)) |
| + self.flag_manager.Register('group', ParsingFlag('dummy_flag2', value=True)) |
| + self.flag_manager.ResetAllFlags() |
| + for flag in self.flag_manager.GetAllFlags(): |
| + self.assertFalse(flag.value) |
| + |
| + def testResetGroupFlags(self): |
| + """Tests that ``ResetGroupFlags`` turns off flags with a certain group.""" |
| + self.flag_manager.Register('group1', ParsingFlag('dummy_flag1', value=True)) |
| + self.flag_manager.Register('group2', ParsingFlag('dummy_flag2', value=True)) |
| + self.flag_manager.ResetGroupFlags('group1') |
| + self.assertFalse(self.flag_manager.Get('dummy_flag1')) |
| + self.assertTrue(self.flag_manager.Get('dummy_flag2')) |
| + |
| + def testConditionallyTurOnFlags(self): |
|
wrengr
2016/12/28 23:34:10
"...TurOn..." -> "...TurnOn..."
Sharu Jiang
2016/12/29 18:20:22
Done.
|
| + """Tests turning on flags if their conditions met.""" |
| + self.flag_manager.Register( |
| + 'group', |
| + ParsingFlag('flag1', condition=lambda line: 'flag1 marker' in line, |
| + value=False)) |
| + self.flag_manager.Register( |
| + 'group', |
| + ParsingFlag('flag2', condition=lambda line: 'flag2 marker' in line, |
| + value=False)) |
| + line = 'line: flag1 marker flag2 marker' |
| + self.flag_manager.ConditionallyTurnOnFlags(line) |
| + self.assertTrue(bool(self.flag_manager.Get('flag1'))) |
| + self.assertTrue(bool(self.flag_manager.Get('flag2'))) |
| + |
| + def testDoNothingWhenConditionsNotMet(self): |
| + """Tests doing nothing if flag's condition is not met.""" |
| + self.flag_manager.Register( |
| + 'group', |
| + ParsingFlag('flag', condition=lambda line: 'flag marker' in line, |
| + value=False)) |
| + line = 'dummy line' |
| + self.flag_manager.ConditionallyTurnOnFlags(line) |
| + self.assertFalse(bool(self.flag_manager.Get('flag'))) |
| + |
| + def testSettingFlag(self): |
| + """Tests using ``TurnOn`` and ``TurnOff`` to set flags.""" |
| + self.flag_manager.Register('group', ParsingFlag('flag', value=False)) |
| + self.flag_manager.TurnOn('flag') |
| + self.flag_manager.TurnOn('dummy_flag') |
| + self.assertTrue(self.flag_manager.Get('flag')) |
| + self.flag_manager.TurnOff('flag') |
| + self.flag_manager.TurnOff('dummy_flag') |
| + self.assertFalse(self.flag_manager.Get('flag')) |