add UnicodeEngine (MultiEngineText and axis texters returning MultiEngineText), texte...
[PyX.git] / test / unit / test_texter.py
blobd10e9a79afcd0fae568ae68d0add7169a0d545ad
1 import sys
2 if sys.path[0] != "../..":
3 sys.path.insert(0, "../..")
5 import unittest
7 from pyx import *
8 from pyx.text import MultiEngineText
9 from pyx.graph.axis.tick import tick
10 from pyx.graph.axis.texter import rational, decimal, default, skipmantissaunity
13 def tex_expr(label):
14 if isinstance(label, MultiEngineText):
15 return label.tex
16 return label
19 class TexterTestCase(unittest.TestCase):
21 def testFrac(self):
22 ticks = [tick((1, 4), labellevel=0), tick((2, 4), labellevel=0)]
23 rational(numsuffix=r"\pi").labels(ticks)
24 self.assertEqual([tex_expr(t.label) for t in ticks], [r"{{\pi}\over{4}}", r"{{\pi}\over{2}}"])
25 ticks = [tick((0, 3), labellevel=0), tick((3, 3), labellevel=0), tick((6, 3), labellevel=0)]
26 rational(numsuffix=r"\pi").labels(ticks)
27 self.assertEqual([tex_expr(t.label) for t in ticks], ["0", r"\pi", r"2\pi"])
28 ticks = [tick((2, 3), labellevel=0), tick((4, 5), labellevel=0)]
29 rational(numsuffix=r"\pi", equaldenom=1).labels(ticks)
30 self.assertEqual([tex_expr(t.label) for t in ticks], [r"{{10\pi}\over{15}}", r"{{12\pi}\over{15}}"])
32 def testDec(self):
33 ticks = [tick((1, 4), labellevel=0), tick((2, 4), labellevel=0)]
34 decimal().labels(ticks)
35 self.assertEqual([t.label for t in ticks], ["0.25", "0.5"])
36 ticks = [tick((1, 4), labellevel=0), tick((2, 4), labellevel=0)]
37 decimal(equalprecision=1).labels(ticks)
38 self.assertEqual([t.label for t in ticks], ["0.25", "0.50"])
39 ticks = [tick((1, 17), labellevel=0), tick((17, 17), labellevel=0)]
40 decimal().labels(ticks)
41 self.assertEqual([t.label for t in ticks], [r"0.\overline{0588235294117647}", "1"])
42 ticks = [tick((1, 10000000), labellevel=0), tick((1, 100000000), labellevel=0), tick((1, 1000000000), labellevel=0)]
43 decimal(thousandthpartsep=",").labels(ticks)
44 self.assertEqual([t.label for t in ticks], ["0.000,000,1", "0.000,000,01", "0.000,000,001"])
45 ticks = [tick((1000000, 1), labellevel=0), tick((10000000, 1), labellevel=0), tick((100000000, 1), labellevel=0)]
46 decimal(thousandsep=",").labels(ticks)
47 self.assertEqual([t.label for t in ticks], ["1,000,000", "10,000,000", "100,000,000"])
49 def testDefault(self):
50 ticks = [tick((0, 10), labellevel=0), tick((1, 10), labellevel=0), tick((1, 1), labellevel=0), tick((10, 1), labellevel=0)]
51 default().labels(ticks)
52 self.assertEqual([tex_expr(t.label) for t in ticks], ["0", "0.1", "1", "10"])
53 ticks = [tick((0, 10), labellevel=0), tick((1, 10), labellevel=0), tick((1, 1), labellevel=0), tick((10000, 1), labellevel=0)]
54 default(minexp=1, skipmantissaunity=skipmantissaunity.never, uniformexp=False).labels(ticks)
55 self.assertEqual([tex_expr(t.label) for t in ticks], [r"0", r"1\cdot{}10^{-1}", r"1", r"1\cdot{}10^{4}"])
56 ticks = [tick((0, 10), labellevel=0), tick((1, 10), labellevel=0), tick((1, 1), labellevel=0), tick((10000, 1), labellevel=0)]
57 default(minexp=2, uniformexp=False).labels(ticks)
58 self.assertEqual([tex_expr(t.label) for t in ticks], ["0", "0.1", "1", r"10^{4}"])
59 ticks = [tick((-1, 10), labellevel=0), tick((1, 1), labellevel=0), tick((10, 1), labellevel=0)]
60 default(minexp=0).labels(ticks)
61 self.assertEqual([tex_expr(t.label) for t in ticks], [r"-10^{-1}", r"10^{0}", r"10^{1}"])
62 ticks = [tick((0, 1), labellevel=0), tick((1, -10), labellevel=0), tick((15, 100), labellevel=0)]
63 default(minnegexp=0, mantissatexter=decimal(equalprecision=True)).labels(ticks)
64 self.assertEqual([tex_expr(t.label) for t in ticks], [r"0.0\cdot{}10^{0}", r"-1.0\cdot{}10^{-1}", r"1.5\cdot{}10^{-1}"])
65 ticks = [tick((0, 1), labellevel=0), tick((1, -10), labellevel=0), tick((15, 100), labellevel=0)]
66 default(minnegexp=1, mantissatexter=decimal(equalprecision=True)).labels(ticks)
67 self.assertEqual([tex_expr(t.label) for t in ticks], [r"0.0", r"-1.0\cdot{}10^{-1}", r"1.5\cdot{}10^{-1}"])
70 if __name__ == "__main__":
71 unittest.main()