/usr/lib/python3/dist-packages/plainbox/impl/test_symbol.py is in python3-plainbox 0.25-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | # This file is part of Checkbox.
#
# Copyright 2013 Canonical Ltd.
# Written by:
# Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
#
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
#
# Checkbox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
"""
plainbox.impl.test_symbol
=========================
Test definitions for plainbox.impl.symbol module
"""
import unittest
from plainbox.impl.symbol import SymbolDef, Symbol
class SymbolTests(unittest.TestCase):
"""
Tests for Symbol class
"""
def test_symbol_str(self):
"""
verify that str() produces the symbol name
"""
self.assertEqual(str(Symbol('foo')), 'foo')
def test_symbol_repr(self):
"""
verify that repr() produces the symbol object
"""
self.assertEqual(repr(Symbol('foo')), "Symbol('foo')")
def test_symbol_hash(self):
"""
verify that hash() hashes the symbol name
"""
self.assertEqual(hash(Symbol('foo')), hash('foo'))
def test_symbol_name(self):
"""
verify that Symbol.name returns the symbol name
"""
self.assertEqual(Symbol('foo').name, 'foo')
def test_symbol_uniqueness(self):
"""
verify that two symbols with the same name are indeed a single object
"""
self.assertIs(Symbol('foo'), Symbol('foo'))
def test_different_symbols_are_not_same(self):
"""
verify that two symbols with different names are not the same object
"""
self.assertIsNot(Symbol('foo'), Symbol('bar'))
def test_symbol_symbol_comparison(self):
"""
verify that comparing symbols to symbols works
"""
self.assertEqual(Symbol('foo'), Symbol('foo'))
self.assertNotEqual(Symbol('foo'), Symbol('bar'))
def test_symbol_string_comparison(self):
"""
verify that comparing symbols to strings works
"""
self.assertEqual(Symbol('foo'), 'foo')
self.assertNotEqual(Symbol('foo'), 'bar')
def test_string_symbol_comparison(self):
"""
verify that comparing strings to symbols works
"""
self.assertEqual('foo', Symbol('foo'))
self.assertNotEqual('bar', Symbol('foo'))
def test_symbol_other_comparison(self):
"""
verify that comparing symbols to other types (or vice
versa) is always False
"""
self.assertFalse(
Symbol('foo') == 1,
"Symbol compared equal to integer")
self.assertFalse(
1 == Symbol('foo'),
"integer compared equal to Symbol")
self.assertTrue(
Symbol('foo') != 1,
"Symbol compared unequal to integer")
self.assertTrue(
1 != Symbol('foo'),
"integer compared unequal to Symbol")
class SymbolDefTests(unittest.TestCase):
"""
Tests for SymbolDef class
"""
def test_implicit_symbols(self):
"""
verify that referencing names inside SymbolDef creates symbols
"""
class S(SymbolDef):
a
b
c
self.assertIs(S.a, Symbol('a'))
self.assertIs(S.b, Symbol('b'))
self.assertIs(S.c, Symbol('c'))
def test_custom_symbols(self):
"""
verify that assigning symbols to variables works
"""
class S(SymbolDef):
a = Symbol("the-a-symbol")
self.assertIs(S.a, Symbol('the-a-symbol'))
def test_custom_string_symbols(self):
"""
verify that assigning strings to variables creates symbols
"""
class S(SymbolDef):
a = "the-a-symbol"
self.assertIs(S.a, Symbol('the-a-symbol'))
def test_repeated_symbol(self):
"""
verify that repeating a symbol doesn't break anything
"""
class S(SymbolDef):
a
a
self.assertIs(S.a, Symbol('a'))
self.assertEqual(S.get_all_symbols(), [Symbol('a')])
def test_invalid_assignment(self):
"""
verify that assigning other values is rejected
"""
with self.assertRaises(ValueError) as boom:
class S(SymbolDef):
a = 1
self.assertEqual(
str(boom.exception),
"Only Symbol() instances can be assigned here")
def test_get_all_symbols(self):
"""
verify that get_all_symbols() works as intended
"""
class S(SymbolDef):
a
b
c
self.assertEqual(
S.get_all_symbols(), [Symbol('a'), Symbol('b'), Symbol('c')])
def test_allow_outer(self):
"""
verify that referencing outer names is allowed via allow_outer
"""
def magic(text):
return text.upper()
class S(SymbolDef, allow_outer=['magic']):
foo = magic('foo')
self.assertEqual(S.foo, 'FOO')
|