Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

# -*- coding: utf-8 -*- 

 

from StringIO import StringIO 

from obspy import UTCDateTime 

from obspy.xseed.fields import Float, VariableString 

import unittest 

 

 

class FieldsTestCase(unittest.TestCase): 

    """ 

    Fields test suite. 

    """ 

    def setUp(self): 

        pass 

 

    def tearDown(self): 

        pass 

 

    def test_formatExponential(self): 

        field = Float(1, "test", 12, mask='%+1.5e', strict=True) 

        self.assertEquals(field.write('2.5'), '+2.50000E+00') 

 

    def test_readDateTime(self): 

        field = VariableString(1, "test", 1, 22, 'T', strict=True) 

        #1 

        orig = '1992,002,00:00:00.0000~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 2)) 

        self.assertEquals(field.write(dt), '1992,002~') 

        #1 

        orig = '1992,002~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 2)) 

        self.assertEquals(field.write(dt), '1992,002~') 

        #2 

        orig = '1992,005,01:02:03.4567~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 5, 1, 2, 3, 456700)) 

        self.assertEquals(field.write(dt), orig) 

        #3 

        orig = '1992,005,01:02:03.0001~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 5, 1, 2, 3, 100)) 

        self.assertEquals(field.write(dt), orig) 

        #4 

        orig = '1992,005,01:02:03.1000~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 5, 1, 2, 3, 100000)) 

        self.assertEquals(field.write(dt), orig) 

        #5 

        orig = '1987,023,04:23:05.1~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1987, 1, 23, 4, 23, 5, 100000)) 

        self.assertEquals(field.write(dt), '1987,023,04:23:05.1000~') 

        #6 

        orig = '1987,023,04:23:05.123~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1987, 1, 23, 4, 23, 5, 123000)) 

        self.assertEquals(field.write(dt), '1987,023,04:23:05.1230~') 

        # 

        orig = '2008,358,01:30:22.0987~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 98700)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,01:30:22.9876~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 987600)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,01:30:22.0005~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 500)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,01:30:22.0000~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 0)) 

        self.assertEquals(field.write(dt), orig) 

 

    def test_readCompactDateTime(self): 

        field = VariableString(1, "test", 0, 22, 'T', strict=True, 

                               compact=True) 

        #1 

        orig = '1992,002~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(1992, 1, 2)) 

        self.assertEquals(field.write(dt), orig) 

        #2 

        orig = '2007,199~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2007, 7, 18)) 

        self.assertEquals(field.write(dt), orig) 

        #3 - wrong syntax 

        orig = '1992' 

        self.assertRaises(Exception, field.read, StringIO(orig)) 

        orig = '1992,' 

        self.assertRaises(Exception, field.read, StringIO(orig)) 

        orig = '1992~' 

        self.assertRaises(Exception, field.read, StringIO(orig)) 

        orig = '1992,~' 

        self.assertRaises(Exception, field.read, StringIO(orig)) 

        #5 - empty datetime 

        orig = '~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, '') 

        self.assertEquals(field.write(dt), '~') 

        #6 - bad syntax 

        orig = '' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, '') 

        self.assertEquals(field.write(dt), '~') 

        #7 

        orig = '2007,199' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2007, 7, 18)) 

        self.assertEquals(field.write(dt), '2007,199~') 

        #8 

        orig = '2009,074,12~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2009, 3, 15, 12)) 

        self.assertEquals(field.write(dt), orig) 

        #9 

        orig = '2008,358,01:30:22.0012~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 1200)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,00:00:22~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 00, 00, 22, 0)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,00:30~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 00, 30, 0, 0)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,01~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 0, 0, 0)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 0, 0, 0, 0)) 

        self.assertEquals(field.write(dt), orig) 

        # 

        orig = '2008,358,01:30:22.5~' 

        dt = field.read(StringIO(orig)) 

        self.assertEquals(dt, UTCDateTime(2008, 12, 23, 01, 30, 22, 500000)) 

        self.assertEquals(field.write(dt), '2008,358,01:30:22.5000~') 

 

 

def suite(): 

    return unittest.makeSuite(FieldsTestCase, 'test') 

 

 

if __name__ == '__main__': 

    unittest.main(defaultTest='suite')