| OLD | NEW |
| (Empty) | |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. |
| 4 |
| 5 from crash.flag_manager import ParsingFlag |
| 6 from crash.flag_manager import FlagManager |
| 7 from crash.test.stacktrace_test_suite import StacktraceTestSuite |
| 8 |
| 9 |
| 10 class ParsingFlagTest(StacktraceTestSuite): |
| 11 |
| 12 def setUp(self): |
| 13 super(ParsingFlagTest, self).setUp() |
| 14 self.flag = ParsingFlag('test_flag', lambda line: 'turn on flag' in line, |
| 15 value=False) |
| 16 |
| 17 def testParsingFlagNameProperty(self): |
| 18 """Tests the ``name`` property of ``ParsingFlag``""" |
| 19 self.assertEqual(self.flag.name, 'test_flag') |
| 20 |
| 21 def testParsingFlagValueProperty(self): |
| 22 """Tests the ``value`` property of ``ParsingFlag``""" |
| 23 self.assertFalse(self.flag.value) |
| 24 self.flag.TurnOn() |
| 25 self.assertTrue(self.flag.value) |
| 26 self.assertTrue(bool(self.flag)) |
| 27 self.flag.TurnOff() |
| 28 self.assertFalse(self.flag.value) |
| 29 self.assertFalse(bool(self.flag)) |
| 30 |
| 31 def testConditionallyTurnOn(self): |
| 32 """Tests that ``ConditionallyTurnOn`` turns on flag if conditions met.""" |
| 33 self.assertFalse(bool(self.flag)) |
| 34 self.flag.ConditionallyTurnOn('line: turn on flag') |
| 35 self.assertTrue(bool(self.flag)) |
| 36 |
| 37 |
| 38 class FlagManagerTest(StacktraceTestSuite): |
| 39 |
| 40 def setUp(self): |
| 41 super(FlagManagerTest, self).setUp() |
| 42 self.flag_manager = FlagManager() |
| 43 |
| 44 def testClearFlags(self): |
| 45 """Tests that ``ClearFlags`` deletes all flags.""" |
| 46 self.flag_manager.Register('test', ParsingFlag('test_flag', value=True)) |
| 47 self.assertEqual(len(self.flag_manager.flags), 1) |
| 48 self.flag_manager.ClearFlags() |
| 49 self.assertEqual(len(self.flag_manager.flags), 0) |
| 50 |
| 51 def testRegister(self): |
| 52 """Tests that ``Register`` add new flags with a certain group.""" |
| 53 self.flag_manager.Register('dummy', ParsingFlag('dummy_flag', value=True)) |
| 54 self.assertEqual(len(self.flag_manager.flag_groups['dummy']), 1) |
| 55 self.assertEqual(len(self.flag_manager.flags), 1) |
| 56 |
| 57 def testGetAllFlags(self): |
| 58 """Tests that ``GetAllFlags`` returns all registered flags.""" |
| 59 flag1 = ParsingFlag('group_flag1', value=True) |
| 60 flag2 = ParsingFlag('group_flag2', value=True) |
| 61 self.flag_manager.Register('group1', flag1) |
| 62 self.flag_manager.Register('group2', flag2) |
| 63 self.assertListEqual(self.flag_manager.GetAllFlags(), [flag1, flag2]) |
| 64 |
| 65 def testGetGroupFlags(self): |
| 66 """Tests that ``GetGroupFlags`` returns all flags with a certain group.""" |
| 67 flag1 = ParsingFlag('group_flag1', value=True) |
| 68 flag2 = ParsingFlag('group_flag2', value=True) |
| 69 self.flag_manager.Register('group1', flag1) |
| 70 self.flag_manager.Register('group2', flag2) |
| 71 self.assertListEqual(self.flag_manager.GetGroupFlags('group1'), [flag1]) |
| 72 self.assertListEqual(self.flag_manager.GetGroupFlags('group2'), [flag2]) |
| 73 |
| 74 def testResetAllFlags(self): |
| 75 """Tests that ``ResetAllFlags`` turns off all the flags.""" |
| 76 self.flag_manager.Register('group', ParsingFlag('dummy_flag1', value=True)) |
| 77 self.flag_manager.Register('group', ParsingFlag('dummy_flag2', value=True)) |
| 78 self.flag_manager.ResetAllFlags() |
| 79 for flag in self.flag_manager.GetAllFlags(): |
| 80 self.assertFalse(flag.value) |
| 81 |
| 82 def testResetGroupFlags(self): |
| 83 """Tests that ``ResetGroupFlags`` turns off flags with a certain group.""" |
| 84 self.flag_manager.Register('group1', ParsingFlag('dummy_flag1', value=True)) |
| 85 self.flag_manager.Register('group2', ParsingFlag('dummy_flag2', value=True)) |
| 86 self.flag_manager.ResetGroupFlags('group1') |
| 87 self.assertFalse(self.flag_manager.Get('dummy_flag1')) |
| 88 self.assertTrue(self.flag_manager.Get('dummy_flag2')) |
| 89 |
| 90 def testConditionallyTurnOnFlags(self): |
| 91 """Tests turning on flags if their conditions met.""" |
| 92 self.flag_manager.Register( |
| 93 'group', |
| 94 ParsingFlag('flag1', |
| 95 turn_on_condition=lambda line: 'flag1 marker' in line, |
| 96 value=False)) |
| 97 self.flag_manager.Register( |
| 98 'group', |
| 99 ParsingFlag('flag2', |
| 100 turn_on_condition=lambda line: 'flag2 marker' in line, |
| 101 value=False)) |
| 102 line = 'line: flag1 marker flag2 marker' |
| 103 self.flag_manager.ConditionallyTurnOnFlags(line) |
| 104 self.assertTrue(bool(self.flag_manager.Get('flag1'))) |
| 105 self.assertTrue(bool(self.flag_manager.Get('flag2'))) |
| 106 |
| 107 def testDoNothingWhenConditionsNotMet(self): |
| 108 """Tests doing nothing if flag's condition is not met.""" |
| 109 self.flag_manager.Register( |
| 110 'group', |
| 111 ParsingFlag('flag', |
| 112 turn_on_condition=lambda line: 'flag marker' in line, |
| 113 value=False)) |
| 114 line = 'dummy line' |
| 115 self.flag_manager.ConditionallyTurnOnFlags(line) |
| 116 self.assertFalse(bool(self.flag_manager.Get('flag'))) |
| 117 |
| 118 def testSettingFlag(self): |
| 119 """Tests using ``TurnOn`` and ``TurnOff`` to set flags.""" |
| 120 self.flag_manager.Register('group', ParsingFlag('flag', value=False)) |
| 121 self.flag_manager.TurnOn('flag') |
| 122 self.flag_manager.TurnOn('dummy_flag') |
| 123 self.assertTrue(self.flag_manager.Get('flag')) |
| 124 self.flag_manager.TurnOff('flag') |
| 125 self.flag_manager.TurnOff('dummy_flag') |
| 126 self.assertFalse(self.flag_manager.Get('flag')) |
| OLD | NEW |