import repository from arizona
[raven.git] / 2.0 / python / test / arizonatemplateTest.py
1 #! /usr/bin/env python
2 """
3 Stork Project (http://www.cs.arizona.edu/stork/)
4 Module: arizonatemplateTest
5 Description:  Test module for arizonatemplate
6
7 Notes:
8 See arizonatemplate for more details
9
10 """
11
12 import arizonatemplate
13 import arizonaconfig
14 import arizonaunittest
15 import os
16 import shutil
17
18
19 class test(arizonaunittest.TestCase):
20
21
22    #------------------------------------------------------------------
23    # __divide_string_into_taglist(instring)
24    #------------------------------------------------------------------
25    def test_divide_string_into_taglist(self):
26
27       # Empty string becomes list containing empty string
28       self.assertEqual(arizonatemplate.divide_string_into_taglist(''),[''])
29  
30       # typical example
31       ti = arizonaconfig.get_option('tagindicator')
32       mylist = arizonatemplate.divide_string_into_taglist('abc'+ti+'def'+ti+'ghi')
33       self.assertEqual(mylist[0],'abc')
34       self.assertEqual(mylist[1].tagname,arizonatemplate.Tag('def').tagname)
35       self.assertEqual(mylist[2],'ghi')
36       
37       try:
38         # change the tag indicator
39         arizonaconfig.set_option('tagindicator', 'A')
40         mylist = arizonatemplate.divide_string_into_taglist('123A456A789')
41
42         self.assertEqual(mylist[0],'123')
43         self.assertEqual(mylist[1].tagname,arizonatemplate.Tag('456').tagname)
44         self.assertEqual(mylist[2],'789')
45       finally:
46         # restore the indicator
47         arizonaconfig.set_option('tagindicator', ti)
48
49       # mismatched tag
50       self.assertException(ValueError, arizonatemplate.divide_string_into_taglist,'start'+ti+'end')
51       
52
53       
54    
55
56
57
58
59    #------------------------------------------------------------------
60    # retrieve_template(template_fn, tokendict={}):
61    #------------------------------------------------------------------
62    def test_retrieve_template(self):
63
64       
65       try:
66          # set up a simple template
67          template1 = "abc"
68          outfo = open("template1","w")
69          outfo.write(template1)
70          outfo.close()
71
72          # Do I get the same thing back without tags?
73          self.assertEqual(arizonatemplate.retrieve_template("template1"),template1)
74          self.assertEqual(arizonatemplate.retrieve_template("template1",{}),template1)
75
76          # Try an example with tags
77          template2 = "12###tag1###56###tag2###90"
78          outfo = open("template2","w")
79          outfo.write(template2)
80          outfo.close()
81    
82          self.assertEqual(arizonatemplate.retrieve_template("template2",{'tag1':'34', 'tag2':'78'}),'1234567890')
83          self.assertEqual(arizonatemplate.retrieve_template("template2",{'tag1':'-', 'tag2':'+'}),'12-56+90')
84          
85          # should get a IndexError because I didn't specify both tags
86          self.assertException(IndexError, arizonatemplate.retrieve_template,"template1",{'tag1':'1'})
87
88
89
90          # duplicate tags
91          template3 = "###tag1###\n+\n###tag1###\n=\n###tag2###"
92          outfo = open("template3","w")
93          outfo.write(template3)
94          outfo.close()
95
96          self.assertEqual(arizonatemplate.retrieve_template("template3",{'tag1':'2', 'tag2':'4'}),'2\n+\n2\n=\n4')
97
98       finally:
99          # Clean up
100          try:
101            os.remove("template1")
102          except OSError:
103            pass
104          try:
105            os.remove("template2")
106          except OSError:
107            pass
108          try:
109            os.remove("template3")
110          except OSError:
111            pass
112
113
114       # One last test, should be able to do this even with the file removed
115       # due to caching
116       self.assertEqual(arizonatemplate.retrieve_template("template3",{'tag1':'2', 'tag2':'4'}),'2\n+\n2\n=\n4')
117
118
119
120
121
122
123 #=====================================================================
124 # Run tests
125 #=====================================================================
126 if __name__=='__main__':
127    arizonaconfig.init_options()
128    arizonaunittest.main()