1# Copyright 2017 The Abseil Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""Tests for converter.py."""
16
17import logging
18
19from absl import logging as absl_logging
20from absl.logging import converter
21from absl.testing import absltest
22
23
24class ConverterTest(absltest.TestCase):
25  """Tests the converter module."""
26
27  def test_absl_to_cpp(self):
28    self.assertEqual(0, converter.absl_to_cpp(absl_logging.DEBUG))
29    self.assertEqual(0, converter.absl_to_cpp(absl_logging.INFO))
30    self.assertEqual(1, converter.absl_to_cpp(absl_logging.WARN))
31    self.assertEqual(2, converter.absl_to_cpp(absl_logging.ERROR))
32    self.assertEqual(3, converter.absl_to_cpp(absl_logging.FATAL))
33
34    with self.assertRaises(TypeError):
35      converter.absl_to_cpp('')
36
37  def test_absl_to_standard(self):
38    self.assertEqual(
39        logging.DEBUG, converter.absl_to_standard(absl_logging.DEBUG))
40    self.assertEqual(
41        logging.INFO, converter.absl_to_standard(absl_logging.INFO))
42    self.assertEqual(
43        logging.WARNING, converter.absl_to_standard(absl_logging.WARN))
44    self.assertEqual(
45        logging.WARN, converter.absl_to_standard(absl_logging.WARN))
46    self.assertEqual(
47        logging.ERROR, converter.absl_to_standard(absl_logging.ERROR))
48    self.assertEqual(
49        logging.FATAL, converter.absl_to_standard(absl_logging.FATAL))
50    self.assertEqual(
51        logging.CRITICAL, converter.absl_to_standard(absl_logging.FATAL))
52    # vlog levels.
53    self.assertEqual(9, converter.absl_to_standard(2))
54    self.assertEqual(8, converter.absl_to_standard(3))
55
56    with self.assertRaises(TypeError):
57      converter.absl_to_standard('')
58
59  def test_standard_to_absl(self):
60    self.assertEqual(
61        absl_logging.DEBUG, converter.standard_to_absl(logging.DEBUG))
62    self.assertEqual(
63        absl_logging.INFO, converter.standard_to_absl(logging.INFO))
64    self.assertEqual(
65        absl_logging.WARN, converter.standard_to_absl(logging.WARN))
66    self.assertEqual(
67        absl_logging.WARN, converter.standard_to_absl(logging.WARNING))
68    self.assertEqual(
69        absl_logging.ERROR, converter.standard_to_absl(logging.ERROR))
70    self.assertEqual(
71        absl_logging.FATAL, converter.standard_to_absl(logging.FATAL))
72    self.assertEqual(
73        absl_logging.FATAL, converter.standard_to_absl(logging.CRITICAL))
74    # vlog levels.
75    self.assertEqual(2, converter.standard_to_absl(logging.DEBUG - 1))
76    self.assertEqual(3, converter.standard_to_absl(logging.DEBUG - 2))
77
78    with self.assertRaises(TypeError):
79      converter.standard_to_absl('')
80
81  def test_standard_to_cpp(self):
82    self.assertEqual(0, converter.standard_to_cpp(logging.DEBUG))
83    self.assertEqual(0, converter.standard_to_cpp(logging.INFO))
84    self.assertEqual(1, converter.standard_to_cpp(logging.WARN))
85    self.assertEqual(1, converter.standard_to_cpp(logging.WARNING))
86    self.assertEqual(2, converter.standard_to_cpp(logging.ERROR))
87    self.assertEqual(3, converter.standard_to_cpp(logging.FATAL))
88    self.assertEqual(3, converter.standard_to_cpp(logging.CRITICAL))
89
90    with self.assertRaises(TypeError):
91      converter.standard_to_cpp('')
92
93  def test_get_initial_for_level(self):
94    self.assertEqual('F', converter.get_initial_for_level(logging.CRITICAL))
95    self.assertEqual('E', converter.get_initial_for_level(logging.ERROR))
96    self.assertEqual('W', converter.get_initial_for_level(logging.WARNING))
97    self.assertEqual('I', converter.get_initial_for_level(logging.INFO))
98    self.assertEqual('I', converter.get_initial_for_level(logging.DEBUG))
99    self.assertEqual('I', converter.get_initial_for_level(logging.NOTSET))
100
101    self.assertEqual('F', converter.get_initial_for_level(51))
102    self.assertEqual('E', converter.get_initial_for_level(49))
103    self.assertEqual('E', converter.get_initial_for_level(41))
104    self.assertEqual('W', converter.get_initial_for_level(39))
105    self.assertEqual('W', converter.get_initial_for_level(31))
106    self.assertEqual('I', converter.get_initial_for_level(29))
107    self.assertEqual('I', converter.get_initial_for_level(21))
108    self.assertEqual('I', converter.get_initial_for_level(19))
109    self.assertEqual('I', converter.get_initial_for_level(11))
110    self.assertEqual('I', converter.get_initial_for_level(9))
111    self.assertEqual('I', converter.get_initial_for_level(1))
112    self.assertEqual('I', converter.get_initial_for_level(-1))
113
114  def test_string_to_standard(self):
115    self.assertEqual(logging.DEBUG, converter.string_to_standard('debug'))
116    self.assertEqual(logging.INFO, converter.string_to_standard('info'))
117    self.assertEqual(logging.WARNING, converter.string_to_standard('warn'))
118    self.assertEqual(logging.WARNING, converter.string_to_standard('warning'))
119    self.assertEqual(logging.ERROR, converter.string_to_standard('error'))
120    self.assertEqual(logging.CRITICAL, converter.string_to_standard('fatal'))
121
122    self.assertEqual(logging.DEBUG, converter.string_to_standard('DEBUG'))
123    self.assertEqual(logging.INFO, converter.string_to_standard('INFO'))
124    self.assertEqual(logging.WARNING, converter.string_to_standard('WARN'))
125    self.assertEqual(logging.WARNING, converter.string_to_standard('WARNING'))
126    self.assertEqual(logging.ERROR, converter.string_to_standard('ERROR'))
127    self.assertEqual(logging.CRITICAL, converter.string_to_standard('FATAL'))
128
129
130if __name__ == '__main__':
131  absltest.main()
132