cosm-rb 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. data/.gitignore +12 -0
  2. data/.rbenv-version +1 -0
  3. data/.rspec +2 -0
  4. data/.rvmrc +1 -0
  5. data/.travis.yml +10 -0
  6. data/CHANGELOG.md +91 -0
  7. data/Gemfile +4 -0
  8. data/MIT-LICENSE +20 -0
  9. data/README.md +195 -0
  10. data/Rakefile +35 -0
  11. data/ci/build_hudson.sh +24 -0
  12. data/cosm-rb.gemspec +40 -0
  13. data/init.rb +2 -0
  14. data/lib/cosm-rb/array_extensions.rb +6 -0
  15. data/lib/cosm-rb/base/instance_methods.rb +28 -0
  16. data/lib/cosm-rb/base.rb +52 -0
  17. data/lib/cosm-rb/client.rb +7 -0
  18. data/lib/cosm-rb/datapoint.rb +71 -0
  19. data/lib/cosm-rb/datastream.rb +136 -0
  20. data/lib/cosm-rb/feed.rb +108 -0
  21. data/lib/cosm-rb/hash_extensions.rb +16 -0
  22. data/lib/cosm-rb/helpers.rb +42 -0
  23. data/lib/cosm-rb/key.rb +98 -0
  24. data/lib/cosm-rb/nil_content.rb +15 -0
  25. data/lib/cosm-rb/object_extensions.rb +6 -0
  26. data/lib/cosm-rb/parsers/csv/datastream_defaults.rb +12 -0
  27. data/lib/cosm-rb/parsers/csv/feed_defaults.rb +38 -0
  28. data/lib/cosm-rb/parsers/defaults.rb +13 -0
  29. data/lib/cosm-rb/parsers/json/datapoint_defaults.rb +12 -0
  30. data/lib/cosm-rb/parsers/json/datastream_defaults.rb +53 -0
  31. data/lib/cosm-rb/parsers/json/feed_defaults.rb +103 -0
  32. data/lib/cosm-rb/parsers/json/key_defaults.rb +15 -0
  33. data/lib/cosm-rb/parsers/json/search_result_defaults.rb +18 -0
  34. data/lib/cosm-rb/parsers/json/trigger_defaults.rb +12 -0
  35. data/lib/cosm-rb/parsers/xml/datapoint_defaults.rb +20 -0
  36. data/lib/cosm-rb/parsers/xml/datastream_defaults.rb +77 -0
  37. data/lib/cosm-rb/parsers/xml/feed_defaults.rb +127 -0
  38. data/lib/cosm-rb/parsers/xml/key_defaults.rb +40 -0
  39. data/lib/cosm-rb/parsers/xml/trigger_defaults.rb +22 -0
  40. data/lib/cosm-rb/permission.rb +67 -0
  41. data/lib/cosm-rb/resource.rb +43 -0
  42. data/lib/cosm-rb/search_result.rb +63 -0
  43. data/lib/cosm-rb/string_extensions.rb +6 -0
  44. data/lib/cosm-rb/template.rb +32 -0
  45. data/lib/cosm-rb/templates/csv/datapoint_defaults.rb +22 -0
  46. data/lib/cosm-rb/templates/csv/datastream_defaults.rb +43 -0
  47. data/lib/cosm-rb/templates/csv/feed_defaults.rb +47 -0
  48. data/lib/cosm-rb/templates/defaults.rb +14 -0
  49. data/lib/cosm-rb/templates/json/datapoint_defaults.rb +15 -0
  50. data/lib/cosm-rb/templates/json/datastream_defaults.rb +66 -0
  51. data/lib/cosm-rb/templates/json/feed_defaults.rb +134 -0
  52. data/lib/cosm-rb/templates/json/key_defaults.rb +41 -0
  53. data/lib/cosm-rb/templates/json/search_result_defaults.rb +47 -0
  54. data/lib/cosm-rb/templates/json/trigger_defaults.rb +21 -0
  55. data/lib/cosm-rb/templates/xml/datapoint_defaults.rb +25 -0
  56. data/lib/cosm-rb/templates/xml/datastream_defaults.rb +66 -0
  57. data/lib/cosm-rb/templates/xml/feed_defaults.rb +110 -0
  58. data/lib/cosm-rb/templates/xml/search_result_defaults.rb +116 -0
  59. data/lib/cosm-rb/templates/xml_headers.rb +17 -0
  60. data/lib/cosm-rb/trigger.rb +65 -0
  61. data/lib/cosm-rb/validations.rb +9 -0
  62. data/lib/cosm-rb/version.rb +3 -0
  63. data/lib/cosm-rb.rb +29 -0
  64. data/spec/cosm-rb/array_extensions_spec.rb +9 -0
  65. data/spec/cosm-rb/base/instance_methods_spec.rb +109 -0
  66. data/spec/cosm-rb/base_spec.rb +56 -0
  67. data/spec/cosm-rb/client_spec.rb +7 -0
  68. data/spec/cosm-rb/datapoint_spec.rb +169 -0
  69. data/spec/cosm-rb/datastream_spec.rb +301 -0
  70. data/spec/cosm-rb/feed_spec.rb +298 -0
  71. data/spec/cosm-rb/hash_extensions_spec.rb +20 -0
  72. data/spec/cosm-rb/helpers_spec.rb +56 -0
  73. data/spec/cosm-rb/key_spec.rb +178 -0
  74. data/spec/cosm-rb/parsers/csv/datastream_defaults_spec.rb +12 -0
  75. data/spec/cosm-rb/parsers/csv/feed_defaults_spec.rb +35 -0
  76. data/spec/cosm-rb/parsers/json/datapoint_defaults_spec.rb +15 -0
  77. data/spec/cosm-rb/parsers/json/datastream_defaults_spec.rb +82 -0
  78. data/spec/cosm-rb/parsers/json/feed_defaults_spec.rb +18 -0
  79. data/spec/cosm-rb/parsers/json/key_defaults_spec.rb +8 -0
  80. data/spec/cosm-rb/parsers/json/search_result_defaults_spec.rb +12 -0
  81. data/spec/cosm-rb/parsers/json/trigger_defaults_spec.rb +16 -0
  82. data/spec/cosm-rb/parsers/xml/datapoint_defaults_spec.rb +19 -0
  83. data/spec/cosm-rb/parsers/xml/datastream_defaults_spec.rb +63 -0
  84. data/spec/cosm-rb/parsers/xml/feed_defaults_spec.rb +65 -0
  85. data/spec/cosm-rb/parsers/xml/key_defaults_spec.rb +16 -0
  86. data/spec/cosm-rb/parsers/xml/trigger_defaults_spec.rb +16 -0
  87. data/spec/cosm-rb/search_result_spec.rb +258 -0
  88. data/spec/cosm-rb/string_extensions_spec.rb +12 -0
  89. data/spec/cosm-rb/template_spec.rb +74 -0
  90. data/spec/cosm-rb/templates/csv/datapoint_defaults_spec.rb +41 -0
  91. data/spec/cosm-rb/templates/csv/datastream_defaults_spec.rb +131 -0
  92. data/spec/cosm-rb/templates/csv/feed_defaults_spec.rb +78 -0
  93. data/spec/cosm-rb/templates/json/datapoint_defaults_spec.rb +14 -0
  94. data/spec/cosm-rb/templates/json/datastream_defaults_spec.rb +170 -0
  95. data/spec/cosm-rb/templates/json/feed_defaults_spec.rb +397 -0
  96. data/spec/cosm-rb/templates/json/key_defaults_spec.rb +29 -0
  97. data/spec/cosm-rb/templates/json/search_result_defaults_spec.rb +37 -0
  98. data/spec/cosm-rb/templates/json/trigger_defaults_spec.rb +19 -0
  99. data/spec/cosm-rb/templates/xml/datapoint_defaults_spec.rb +14 -0
  100. data/spec/cosm-rb/templates/xml/datastream_defaults_spec.rb +113 -0
  101. data/spec/cosm-rb/templates/xml/feed_defaults_spec.rb +131 -0
  102. data/spec/cosm-rb/templates/xml/search_result_defaults_spec.rb +44 -0
  103. data/spec/cosm-rb/trigger_spec.rb +117 -0
  104. data/spec/fixtures/models.rb +81 -0
  105. data/spec/spec_helper.rb +17 -0
  106. data/spec/support/contain_datapoint_eeml_matcher.rb +16 -0
  107. data/spec/support/contain_datastream_eeml_matcher.rb +60 -0
  108. data/spec/support/contain_feed_eeml_matcher.rb +96 -0
  109. data/spec/support/datapoint_helper.rb +53 -0
  110. data/spec/support/datastream_helper.rb +300 -0
  111. data/spec/support/describe_eeml_matcher.rb +23 -0
  112. data/spec/support/feed_helper.rb +771 -0
  113. data/spec/support/fully_represent_datapoint_matcher.rb +30 -0
  114. data/spec/support/fully_represent_datastream_matcher.rb +92 -0
  115. data/spec/support/fully_represent_feed_matcher.rb +226 -0
  116. data/spec/support/fully_represent_key_matcher.rb +74 -0
  117. data/spec/support/fully_represent_search_result_matcher.rb +67 -0
  118. data/spec/support/fully_represent_trigger_matcher.rb +29 -0
  119. data/spec/support/key_helper.rb +74 -0
  120. data/spec/support/search_result_helper.rb +252 -0
  121. data/spec/support/trigger_helper.rb +51 -0
  122. metadata +363 -0
@@ -0,0 +1,53 @@
1
+ def datapoint_as_(format, options = {})
2
+ case format.to_s
3
+ when 'hash'
4
+ data = {
5
+ "at" => Time.parse('2011-01-02'),
6
+ "value" => "2000"
7
+ }
8
+ when 'json'
9
+ data = {
10
+ 'at' => '2011-02-16T16:21:01.834174Z',
11
+ 'value' => "2000"
12
+ }
13
+ when 'xml'
14
+ data = <<-XML
15
+ <?xml version="1.0" encoding="UTF-8"?>
16
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
17
+ <environment>
18
+ <data>
19
+ <datapoints>
20
+ <value at="2011-03-02T15:59:56.895922Z">2000</value>
21
+ </datapoints>
22
+ </data>
23
+ </environment>
24
+ </eeml>
25
+ XML
26
+ end
27
+
28
+ # Add extra options we passed
29
+ if options[:with]
30
+ options[:with].each do |field, value|
31
+ data[field.to_s] = value
32
+ end
33
+ end
34
+
35
+ # Remove options we don't need
36
+ if options[:except]
37
+ options[:except].each do |field,_|
38
+ data.delete(field.to_s)
39
+ end
40
+ end
41
+
42
+ # Return the feed in the requested format
43
+ case format.to_s
44
+ when 'hash'
45
+ data
46
+ when 'json'
47
+ data.to_json
48
+ when 'xml'
49
+ data
50
+ else
51
+ raise "#{format} undefined"
52
+ end
53
+ end
@@ -0,0 +1,300 @@
1
+ def datastream_as_(format, options = {})
2
+ case format.to_s
3
+ when 'hash'
4
+ data = {
5
+ "updated" => Time.parse('2011-01-02'),
6
+ "max_value"=>658.0,
7
+ "unit_type"=>"derived SI",
8
+ "min_value"=>0.0,
9
+ "unit_label"=>"percentage",
10
+ "current_value"=>"14",
11
+ "id"=>"0",
12
+ "tags"=>"humidity,Temperature ,freakin lasers",
13
+ "unit_symbol"=>"%",
14
+ "feed_id" => "24568",
15
+ "feed_creator" => "Dennis",
16
+ "datapoints" => [{
17
+ "value" => "1",
18
+ "at" => Time.parse("2011-03-02T15:59:56.895922Z")
19
+ },
20
+ {
21
+ "value" => "1",
22
+ "at" => Time.parse("2011-03-02T16:00:07.188648Z")
23
+ },
24
+ {
25
+ "value" => "2",
26
+ "at" => Time.parse("2011-03-02T16:00:18.416500Z")
27
+ }]
28
+ }
29
+ when 'json'
30
+ data = datastream_as_json(options[:version] || "1.0.0")
31
+ when 'xml'
32
+ data = datastream_as_xml(options[:version] || "0.5.1", options[:except_node])
33
+ when 'csv'
34
+ data = '14'
35
+ end
36
+
37
+ # Add extra options we passed
38
+ if options[:with]
39
+ options[:with].each do |field, value|
40
+ data[field.to_s] = value
41
+ end
42
+ end
43
+
44
+ # Remove options we don't need
45
+ if options[:except]
46
+ options[:except].each do |field,_|
47
+ data.delete(field.to_s)
48
+ end
49
+ end
50
+
51
+ # Return the feed in the requested format
52
+ case format.to_s
53
+ when 'hash'
54
+ data
55
+ when 'json'
56
+ data.to_json
57
+ when 'xml'
58
+ data
59
+ when 'csv'
60
+ data
61
+ else
62
+ raise "#{format} undefined"
63
+ end
64
+
65
+ end
66
+
67
+ def datastream_as_json(version)
68
+ case version
69
+ when "1.0.0"
70
+ {
71
+ 'min_value' => '0.0',
72
+ 'at' => '2011-02-16T16:21:01.834174Z',
73
+ 'tags' => ['humidity', 'Temperature', 'freakin lasers'],
74
+ 'current_value' => '14',
75
+ 'max_value' => '658.0',
76
+ 'datapoints_function' => 'average',
77
+ "datapoints" => [{
78
+ "value" => "1",
79
+ "at" => "2011-03-02T15:59:56.895922Z"
80
+ },
81
+ {
82
+ "value" => "1",
83
+ "at" => "2011-03-02T16:00:07.188648Z"
84
+ },
85
+ {
86
+ "value" => "2",
87
+ "at" => "2011-03-02T16:00:18.416500Z"
88
+ }],
89
+ 'id' => '0',
90
+ "unit" => {
91
+ "type" => "derived SI",
92
+ "symbol" => "%",
93
+ "label" => "percentage"
94
+ },
95
+ 'version' => '1.0.0'
96
+ }
97
+ when "0.6-alpha"
98
+ {
99
+ "tags" => ["humidity"],
100
+ "values" => [{
101
+ "min_value" => "0.0",
102
+ "recorded_at" => "2011-02-22T14:28:50Z",
103
+ "value" => "129",
104
+ "max_value" => "658.0"
105
+ }],
106
+ "id" => "0",
107
+ "unit" => {
108
+ "type" => "derived SI",
109
+ "symbol" => "%",
110
+ "label" => "percentage"
111
+ },
112
+ 'version' => '0.6-alpha'
113
+ }
114
+ else
115
+ raise "Datastream as JSON #{version} not implemented"
116
+ end
117
+ end
118
+
119
+ def datastream_as_xml(version, except_node = nil)
120
+ case version
121
+ when "0.5.1"
122
+ if except_node == :tag
123
+ xml = <<XML
124
+ <?xml version="1.0" encoding="UTF-8"?>
125
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
126
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
127
+ <data id="0">
128
+ <current_value at="2011-02-16T16:21:01.834174Z">14</current_value>
129
+ <max_value>658.0</max_value>
130
+ <min_value>0.0</min_value>
131
+ <unit type="derivedSI" symbol="A">Alpha</unit>
132
+ </data>
133
+ </environment>
134
+ </eeml>
135
+ XML
136
+ elsif except_node == :unit
137
+ xml = <<XML
138
+ <?xml version="1.0" encoding="UTF-8"?>
139
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
140
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
141
+ <data id="0">
142
+ <tag>freakin lasers</tag>
143
+ <tag>humidity</tag>
144
+ <tag>Temperature</tag>
145
+ <current_value at="2011-02-16T16:21:01.834174Z">14</current_value>
146
+ <max_value>658.0</max_value>
147
+ <min_value>0.0</min_value>
148
+ </data>
149
+ </environment>
150
+ </eeml>
151
+ XML
152
+ elsif except_node == :unit_attributes
153
+ xml = <<XML
154
+ <?xml version="1.0" encoding="UTF-8"?>
155
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
156
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
157
+ <data id="0">
158
+ <tag>freakin lasers</tag>
159
+ <tag>humidity</tag>
160
+ <tag>Temperature</tag>
161
+ <current_value at="2011-02-16T16:21:01.834174Z">14</current_value>
162
+ <max_value>658.0</max_value>
163
+ <min_value>0.0</min_value>
164
+ <unit>Alpha</unit>
165
+ </data>
166
+ </environment>
167
+ </eeml>
168
+ XML
169
+ elsif except_node == :timestamps
170
+ xml = <<XML
171
+ <?xml version="1.0" encoding="UTF-8"?>
172
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
173
+ <environment id="504" creator="http://appdev.loc:3000/users/occaecati">
174
+ <data id="0">
175
+ <tag>freakin lasers</tag>
176
+ <tag>humidity</tag>
177
+ <tag>Temperature</tag>
178
+ <current_value>14</current_value>
179
+ <max_value>658.0</max_value>
180
+ <min_value>0.0</min_value>
181
+ <unit type="derivedSI" symbol="A">Alpha</unit>
182
+ </data>
183
+ </environment>
184
+ </eeml>
185
+ XML
186
+ else
187
+ xml = <<XML
188
+ <?xml version="1.0" encoding="UTF-8"?>
189
+ <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
190
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
191
+ <data id="0">
192
+ <tag>freakin lasers</tag>
193
+ <tag>humidity</tag>
194
+ <tag>Temperature</tag>
195
+ <current_value at="2011-02-16T16:21:01.834174Z">14</current_value>
196
+ <max_value>658.0</max_value>
197
+ <min_value>0.0</min_value>
198
+ <unit type="derivedSI" symbol="A">Alpha</unit>
199
+ <datapoints>
200
+ <value at="2011-03-02T15:59:56.895922Z">1</value>
201
+ <value at="2011-03-02T16:00:07.188648Z">1</value>
202
+ <value at="2011-03-02T16:00:18.416500Z">2</value>
203
+ </datapoints>
204
+ </data>
205
+ </environment>
206
+ </eeml>
207
+ XML
208
+ end
209
+ when "5"
210
+ if except_node == :tag
211
+ xml = <<XML
212
+ <?xml version="1.0" encoding="UTF-8"?>
213
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
214
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
215
+ <data id="0">
216
+ <value maxValue="658.0" minValue="658">14</value>
217
+ <unit type="derivedSI" symbol="A">Alpha</unit>
218
+ </data>
219
+ </environment>
220
+ </eeml>
221
+ XML
222
+ elsif except_node == :unit
223
+ xml = <<XML
224
+ <?xml version="1.0" encoding="UTF-8"?>
225
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
226
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
227
+ <data id="0">
228
+ <tag>freakin lasers</tag>
229
+ <tag>humidity</tag>
230
+ <tag>Temperature</tag>
231
+ <value maxValue="658.0" minValue="658">14</value>
232
+ </data>
233
+ </environment>
234
+ </eeml>
235
+ XML
236
+ elsif except_node == :unit_attributes
237
+ xml = <<XML
238
+ <?xml version="1.0" encoding="UTF-8"?>
239
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
240
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
241
+ <data id="0">
242
+ <tag>freakin lasers</tag>
243
+ <tag>humidity</tag>
244
+ <tag>Temperature</tag>
245
+ <value maxValue="658.0" minValue="658">14</value>
246
+ <unit>Alpha</unit>
247
+ </data>
248
+ </environment>
249
+ </eeml>
250
+ XML
251
+ elsif except_node == :value_attributes
252
+ xml = <<XML
253
+ <?xml version="1.0" encoding="UTF-8"?>
254
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
255
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
256
+ <data id="0">
257
+ <tag>freakin lasers</tag>
258
+ <tag>humidity</tag>
259
+ <tag>Temperature</tag>
260
+ <value>14</value>
261
+ <unit type="derivedSI" symbol="A">Alpha</unit>
262
+ </data>
263
+ </environment>
264
+ </eeml>
265
+ XML
266
+ elsif except_node == :timestamps
267
+ xml = <<XML
268
+ <?xml version="1.0" encoding="UTF-8"?>
269
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
270
+ <environment id="504" creator="http://appdev.loc:3000/users/occaecati">
271
+ <data id="0">
272
+ <tag>freakin lasers</tag>
273
+ <tag>humidity</tag>
274
+ <tag>Temperature</tag>
275
+ <value maxValue="658.0" minValue="658">14</value>
276
+ <unit type="derivedSI" symbol="A">Alpha</unit>
277
+ </data>
278
+ </environment>
279
+ </eeml>
280
+ XML
281
+ else
282
+ xml = <<XML
283
+ <?xml version="1.0" encoding="UTF-8"?>
284
+ <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
285
+ <environment updated="2011-02-16T16:21:01.834174Z" id="504" creator="http://appdev.loc:3000/users/occaecati">
286
+ <data id="0">
287
+ <tag>freakin lasers</tag>
288
+ <tag>humidity</tag>
289
+ <tag>Temperature</tag>
290
+ <value maxValue="658.0" minValue="658">14</value>
291
+ <unit type="derivedSI" symbol="A">Alpha</unit>
292
+ </data>
293
+ </environment>
294
+ </eeml>
295
+ XML
296
+ end
297
+ else
298
+ raise "Datastream as XML #{version} not implemented"
299
+ end
300
+ end
@@ -0,0 +1,23 @@
1
+ RSpec::Matchers.define :describe_eeml_for_version do |eeml_version|
2
+ match do |xml|
3
+ attrs = xml.root
4
+ case eeml_version
5
+ when "0.5.1"
6
+ attrs["version"].should == eeml_version
7
+ attrs.namespace.href.should == "http://www.eeml.org/xsd/0.5.1"
8
+ attrs["schemaLocation"].should == "http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd"
9
+ when "5"
10
+ attrs["version"].should == eeml_version
11
+ attrs.namespace.href.should == "http://www.eeml.org/xsd/005"
12
+ attrs["schemaLocation"].should == "http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd"
13
+ else
14
+ false
15
+ end
16
+ end
17
+
18
+ failure_message_for_should do |xml|
19
+ "expected #{xml} to describe eeml version #{eeml_version}"
20
+ end
21
+ end
22
+
23
+