1 |
frank |
1029 |
# Copyright (C) 2003 by Intevation GmbH |
2 |
|
|
# Authors: |
3 |
|
|
# Frank Koormann <[email protected]> |
4 |
|
|
# |
5 |
|
|
# This program is free software under the GPL (>=v2) |
6 |
|
|
# Read the file COPYING coming with the software for details. |
7 |
|
|
|
8 |
|
|
""" |
9 |
|
|
Test the CSV table export |
10 |
|
|
""" |
11 |
|
|
|
12 |
|
|
__version__ = "$Revision" |
13 |
|
|
# $Source$ |
14 |
|
|
# $Id$ |
15 |
|
|
|
16 |
|
|
import unittest |
17 |
|
|
|
18 |
|
|
import support |
19 |
|
|
support.initthuban() |
20 |
|
|
|
21 |
|
|
from Thuban.Model.table import MemoryTable, \ |
22 |
|
|
FIELDTYPE_DOUBLE, FIELDTYPE_INT, FIELDTYPE_STRING, \ |
23 |
|
|
table_to_csv |
24 |
|
|
|
25 |
|
|
class TestCSVTable(unittest.TestCase, support.FileTestMixin): |
26 |
|
|
|
27 |
|
|
def setUp(self): |
28 |
|
|
"""Create a simple table and write to file.""" |
29 |
|
|
self.table = MemoryTable([("type", FIELDTYPE_STRING), |
30 |
|
|
("value", FIELDTYPE_DOUBLE), |
31 |
|
|
("code", FIELDTYPE_INT)], |
32 |
|
|
[("UNKNOWN", 0.0, 0), |
33 |
|
|
("Foo", 0.5, -1), |
34 |
|
|
("Foo", 0.25, 100), |
35 |
|
|
("bar", 1e10, 17)]) |
36 |
|
|
|
37 |
|
|
def test_table_to_cvs(self): |
38 |
|
|
"""Test table_to_csv()""" |
39 |
|
|
filename = self.temp_file_name("test_export_csv.csv") |
40 |
|
|
table_to_csv(self.table, filename) |
41 |
|
|
file = open(filename, "r") |
42 |
|
|
|
43 |
|
|
# Tile line |
44 |
|
|
line=file.readline() |
45 |
|
|
self.assertEquals(line,'#type,value,code\n') |
46 |
|
|
|
47 |
|
|
# Data lines |
48 |
|
|
line=file.readline() |
49 |
|
|
self.assertEquals(line,'UNKNOWN,0.0,0\n') |
50 |
|
|
|
51 |
|
|
line=file.readline() |
52 |
|
|
self.assertEquals(line,'Foo,0.5,-1\n') |
53 |
|
|
|
54 |
|
|
line=file.readline() |
55 |
|
|
self.assertEquals(line,'Foo,0.25,100\n') |
56 |
|
|
|
57 |
|
|
line=file.readline() |
58 |
|
|
self.assertEquals(line,'bar,10000000000.0,17\n') |
59 |
|
|
self.assertEquals(file.readline(),'') |
60 |
jonathan |
1398 |
|
61 |
|
|
# save selected records |
62 |
|
|
table_to_csv(self.table, filename, [1, 3]) |
63 |
|
|
file = open(filename, "r") |
64 |
|
|
|
65 |
|
|
# Tile line |
66 |
|
|
line=file.readline() |
67 |
|
|
self.assertEquals(line,'#type,value,code\n') |
68 |
|
|
|
69 |
|
|
# Data lines |
70 |
|
|
line=file.readline() |
71 |
|
|
self.assertEquals(line,'Foo,0.5,-1\n') |
72 |
|
|
|
73 |
|
|
line=file.readline() |
74 |
|
|
self.assertEquals(line,'bar,10000000000.0,17\n') |
75 |
|
|
self.assertEquals(file.readline(),'') |
76 |
frank |
1029 |
|
77 |
|
|
if __name__ == "__main__": |
78 |
|
|
support.run_tests() |