#!/usr/bin/python
import sys, os
if __name__ == '__main__':
sys.path = ([os.path.dirname(os.path.dirname(os.path.dirname(
os.path.realpath(__file__))))] + sys.path)
__requires__='Bazki'
import pkg_resources
pkg_resources.require('Bazki')
import unittest, warnings
from bazbase import db, testing, flavors, structure, get
from bazbase.conversion import to_python, render
import gameki
import pylons
class TestNames(unittest.TestCase):
def setUp(self):
gameki.custom.set_up()
testing.set_up_for_tests()
db.begin_transaction()
try:
structure.clear_database()
structure.create_prop(u'name', u'string').set_default('')
structure.create_prop(u'substitution', u'macro').set_default('')
root = structure.create_root_element(u'Root')
dude = root.create_child(u'Dude')
dude.set_prop(u'name', "Dr. Alex ``Bulldozer'' Anderson, Esq.")
dude.set_prop(u'gender', 'A')
structure.flush_database_for_test()
except:
db.abort_transaction()
raise
def tearDown(self):
db.abort_transaction()
def test_standalone(self):
dude = structure.get_element(u'Dude')
dude.set_prop(u'comment', '<>')
self.assertEqual('Alex', render(dude, u'comment'))
dude.set_prop(u'comment', '<>')
self.assertEqual(u'Dr. Alex \u201CBulldozer\u201D Anderson, Esq.',
render(dude, u'comment'))
dude.set_prop(u'comment', '<>')
self.assertEqual('Dr. Anderson', render(dude, u'comment'))
dude.set_prop(u'comment', '<>')
self.assertEqual('Alex', render(dude, u'comment'))
dude.set_prop(u'comment', '<>')
self.assertEqual('she/he', render(dude, u'comment'))
dude.set_prop(u'comment', '<>')
self.assertEqual('Her/him', render(dude, u'comment'))
def test_in_content(self):
root = structure.get_element(u'Root')
root.set_prop(u'comment', '<><><>')
self.assertEqual('Alex', render(root, u'comment'))
root.set_prop(u'comment', '<><><>')
self.assertEqual(u'Dr. Alex \u201CBulldozer\u201D Anderson, Esq.',
render(root, u'comment'))
root.set_prop(u'comment', '<><><>')
self.assertEqual('Dr. Anderson', render(root, u'comment'))
root.set_prop(u'comment', '<><><>')
self.assertEqual('Alex', render(root, u'comment'))
root.set_prop(u'comment', '<><><>')
self.assertEqual('she/he', render(root, u'comment'))
root.set_prop(u'comment', '<><><>')
self.assertEqual('Her/him', render(root, u'comment'))
def test_texish(self):
root = structure.get_element(u'Root')
root.set_prop(u'comment', r'\Dude{\first}')
self.assertEqual('Alex', render(root, u'comment'))
root.set_prop(u'comment', r'\Dude{\full}')
self.assertEqual(u'Dr. Alex \u201CBulldozer\u201D Anderson, Esq.',
render(root, u'comment'))
root.set_prop(u'comment', r'\Dude{\formal}')
self.assertEqual('Dr. Anderson', render(root, u'comment'))
root.set_prop(u'comment', r'\Dude{\informal}')
self.assertEqual('Alex', render(root, u'comment'))
root.set_prop(u'comment', r'\Dude{\they}')
self.assertEqual('she/he', render(root, u'comment'))
root.set_prop(u'comment', r'\Dude{\Them}')
self.assertEqual('Her/him', render(root, u'comment'))
def test_gender(self):
dude = structure.get_element(u'Dude')
dude.set_prop(u'gender', 'M')
dude.set_prop(u'comment', "My <>, my dad's <>, crashed <> car which <> bought <> when a \mfn{Werewolf}{Mongoose}{Fish} cheated <>.")
self.assertEqual(u"My uncle, my dad\u2019s brother, crashed his car which he bought himself when a Werewolf cheated him.", render(dude, u'comment'))
dude.set_prop(u'gender', 'F')
self.assertEqual(u"My aunt, my dad\u2019s sister, crashed her car which she bought herself when a Mongoose cheated her.", render(dude, u'comment'))
dude.set_prop(u'gender', 'N')
self.assertEqual(u"My aunt/uncle, my dad\u2019s sibling, crashed its car which it bought itself when a Fish cheated it.", render(dude, u'comment'))
dude.set_prop(u'gender', '?')
self.assertEqual(u"My aunt/uncle, my dad\u2019s sibling, crashed her/his car which she/he bought herself/himself when a Werewolf/Mongoose cheated her/him.", render(dude, u'comment'))
dude.set_prop(u'gender', 'S')
self.assertEqual(u"My aunt/uncle, my dad\u2019s sibling, crashed eir car which ey bought emself when a Werewolf/Mongoose cheated em.", render(dude, u'comment'))
def test_labeledrefs(self):
structure.create_prop(u'contacts', u'labeledrefs')
root = structure.get_element(u'Root')
dude = structure.get_element(u'Dude')
dude.set_prop(u'contacts', "\Dude{Yourself: \Dude{}.}")
self.assertEqual(u" * Dr. Alex \u201cBulldozer\u201d Anderson, Esq. (Dude)@: Yourself: Dr. Alex \u201cBulldozer\u201d Anderson, Esq..", render(dude, u'contacts'))
root.set_prop(u'comment', """<> * **<>**: <>
<>""")
self.assertEqual(u' * *Dr. Alex \u201cBulldozer\u201d Anderson, Esq.*: Yourself: Dr. Alex \u201cBulldozer\u201d Anderson, Esq..', render(dude, u'comment'))
def test_identities(self):
dude = structure.get_element(u'Dude')
identity = dude.create_child(u'Identity')
identity.set_prop(u'name', r'\1')
identity.set_prop(u'gender', r'\2')
structure.create_prop(u'persona', u'reference')
dude.set_prop(u'persona', r'\Identity[Gigo][N]')
dude.set_prop(u'comment', r'\first had a fight with \their persona, \persona{\name, when \they ate a \food}.')
dude.set_prop(u'food', r'carrot')
self.assertEqual(u'Alex had a fight with her/his persona, Gigo, when it ate a carrot.', render(dude, u'comment'))
def test_identity_ownership(self):
dude = structure.get_element(u'Dude')
identity = dude.create_child(u'Identity')
identity.set_prop(u'name', r'\1')
identity.set_prop(u'gender',
r'<>\2<><><>')
structure.create_prop(u'owned', u'boolean')
identity.set_prop(u'owned', r'True')
structure.create_prop(u'persona', u'reference')
dude.set_prop(u'gender', r'F')
dude.set_prop(u'persona', r'\Identity[Psyche]')
dude.set_prop(u'comment', r'\first had a fight with \their persona, \persona{\name, when \they ate a \food}.')
dude.set_prop(u'food', r'carrot')
self.assertEqual(u'Alex had a fight with her persona, Psyche, when she ate a carrot.', render(dude, u'comment'))
class TestProduction(unittest.TestCase):
def setUp(self):
testing.set_up_for_tests()
db.begin_transaction()
try:
structure.clear_database()
structure.create_prop(u'name', u'string').set_default('')
structure.create_prop(u'topleft', u'string').set_default('')
structure.create_prop(u'topright', u'string').set_default('')
structure.create_prop(u'bottomleft', u'string').set_default('')
structure.create_prop(u'bottomright', u'string').set_default('')
structure.create_prop(u'badgecolor', u'string').set_default('')
structure.create_prop(u'product', u'text').set_default('')
root = structure.create_root_element(u'Root')
root.set_prop(u'name', 'Bob')
root.set_prop(u'topleft', 'TL')
root.set_prop(u'topright', 'TR')
root.set_prop(u'bottomleft', 'BL')
root.set_prop(u'bottomright', 'BR')
root.set_prop(u'product', 'Whatever')
structure.flush_database_for_test()
except:
db.abort_transaction()
raise
def tearDown(self):
db.abort_transaction()
def test_badge(self):
root = structure.get_element(u'Root')
root.set_prop(u'badgecolor', 'white')
root.set_prop(u'comment', '''<>
== <> ==
<>''')
self.assertIn('
Bar
\n\n\nBaz
\n\nQuux
\n\nText
', render(root, u'product', 'html')) self.assertEquals(ur'''\begin{thincenter} {\em Foo} \end{thincenter}\begin{thinright} {\em Bar} \end{thinright} \noindent{}{\em Baz} \begin{thinright} {\em Quux} \end{thinright} Text''', render(root, u'product', 'tex')) def test_sign(self): root = structure.get_element(u'Root') root.set_prop(u'desc', 'Desc') root.set_prop(u'topleft', 'A') root.set_prop(u'topright', 'B') root.set_prop(u'bottomleft', 'C') root.set_prop(u'bottomright', 'D') root.set_prop(u'key', 'key') root.set_prop(u'blurb', 'blurb') root.set_prop(u'something', '''<