obix 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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +128 -0
- data/Rakefile +7 -0
- data/lib/obix.rb +55 -0
- data/lib/obix/alarms.rb +48 -0
- data/lib/obix/builder.rb +45 -0
- data/lib/obix/configuration.rb +79 -0
- data/lib/obix/errors.rb +6 -0
- data/lib/obix/history.rb +65 -0
- data/lib/obix/network.rb +76 -0
- data/lib/obix/objects.rb +46 -0
- data/lib/obix/objects/base.rb +97 -0
- data/lib/obix/objects/boolean.rb +13 -0
- data/lib/obix/objects/date.rb +15 -0
- data/lib/obix/objects/duration.rb +14 -0
- data/lib/obix/objects/enumerable.rb +13 -0
- data/lib/obix/objects/error.rb +26 -0
- data/lib/obix/objects/feed.rb +14 -0
- data/lib/obix/objects/float.rb +16 -0
- data/lib/obix/objects/integer.rb +15 -0
- data/lib/obix/objects/list.rb +14 -0
- data/lib/obix/objects/object.rb +20 -0
- data/lib/obix/objects/operation.rb +28 -0
- data/lib/obix/objects/reference.rb +10 -0
- data/lib/obix/objects/string.rb +14 -0
- data/lib/obix/objects/time.rb +15 -0
- data/lib/obix/objects/uri.rb +13 -0
- data/lib/obix/tag.rb +43 -0
- data/lib/obix/types.rb +15 -0
- data/lib/obix/types/boolean.rb +25 -0
- data/lib/obix/types/date.rb +20 -0
- data/lib/obix/types/duration.rb +21 -0
- data/lib/obix/types/float.rb +18 -0
- data/lib/obix/types/integer.rb +18 -0
- data/lib/obix/types/string.rb +18 -0
- data/lib/obix/types/time.rb +20 -0
- data/lib/obix/types/type.rb +17 -0
- data/lib/obix/types/uri.rb +28 -0
- data/lib/obix/version.rb +3 -0
- data/lib/obix/watch.rb +119 -0
- data/obix.gemspec +31 -0
- data/test/fixtures/alarmqueryout.xml +19 -0
- data/test/fixtures/alarmsubject.xml +5 -0
- data/test/fixtures/history.xml +9 -0
- data/test/fixtures/historyqueryout.xml +15 -0
- data/test/fixtures/invalid.xml +1 -0
- data/test/fixtures/objects/boolean.xml +1 -0
- data/test/fixtures/objects/date.xml +1 -0
- data/test/fixtures/objects/duration.xml +1 -0
- data/test/fixtures/objects/enumerable.xml +1 -0
- data/test/fixtures/objects/error.xml +1 -0
- data/test/fixtures/objects/feed.xml +4 -0
- data/test/fixtures/objects/float.xml +1 -0
- data/test/fixtures/objects/integer.xml +1 -0
- data/test/fixtures/objects/list.xml +4 -0
- data/test/fixtures/objects/object.xml +1 -0
- data/test/fixtures/objects/operation.xml +1 -0
- data/test/fixtures/objects/reference.xml +1 -0
- data/test/fixtures/objects/string.xml +1 -0
- data/test/fixtures/objects/time.xml +1 -0
- data/test/fixtures/objects/uri.xml +1 -0
- data/test/fixtures/valid.xml +11 -0
- data/test/fixtures/watch.xml +8 -0
- data/test/fixtures/watchout.xml +5 -0
- data/test/fixtures/watchservice.xml +3 -0
- data/test/obix/alarms_test.rb +36 -0
- data/test/obix/builder_test.rb +32 -0
- data/test/obix/configuration_test.rb +32 -0
- data/test/obix/history_test.rb +54 -0
- data/test/obix/network_test.rb +134 -0
- data/test/obix/objects/base_test.rb +54 -0
- data/test/obix/objects/boolean_test.rb +17 -0
- data/test/obix/objects/date_test.rb +16 -0
- data/test/obix/objects/duration_test.rb +16 -0
- data/test/obix/objects/enumerable_test.rb +17 -0
- data/test/obix/objects/error_test.rb +47 -0
- data/test/obix/objects/feed_test.rb +16 -0
- data/test/obix/objects/float_test.rb +16 -0
- data/test/obix/objects/integer_test.rb +16 -0
- data/test/obix/objects/list_test.rb +17 -0
- data/test/obix/objects/object_test.rb +17 -0
- data/test/obix/objects/operation_test.rb +37 -0
- data/test/obix/objects/reference_test.rb +16 -0
- data/test/obix/objects/string_test.rb +16 -0
- data/test/obix/objects/time_test.rb +16 -0
- data/test/obix/objects/uri_test.rb +16 -0
- data/test/obix/objects_test.rb +13 -0
- data/test/obix/tag_test.rb +42 -0
- data/test/obix/types/boolean_test.rb +18 -0
- data/test/obix/types/date_test.rb +20 -0
- data/test/obix/types/duration_test.rb +18 -0
- data/test/obix/types/float_test.rb +18 -0
- data/test/obix/types/integer_test.rb +18 -0
- data/test/obix/types/string_test.rb +18 -0
- data/test/obix/types/time_test.rb +20 -0
- data/test/obix/types/uri_test.rb +48 -0
- data/test/obix/watch_test.rb +169 -0
- data/test/obix_test.rb +42 -0
- data/test/test_helper.rb +18 -0
- metadata +357 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
<obj>
|
2
|
+
<int name="count" val="2"/>
|
3
|
+
<abstime name="start" val="2012-01-01T00:00:00"/>
|
4
|
+
<abstime name="end" val="2013-01-01T00:00:00"/>
|
5
|
+
<list name="data" of="obix:Alarm">
|
6
|
+
<obj>
|
7
|
+
<ref name="source" href="/thermostat"/>
|
8
|
+
<abstime name="timestamp" val="2012-01-01T00:00:00"/>
|
9
|
+
</obj>
|
10
|
+
<obj>
|
11
|
+
<ref name="source" href="/thermostat"/>
|
12
|
+
<abstime name="timestamp" val="2012-01-02T00:00:00"/>
|
13
|
+
</obj>
|
14
|
+
<obj>
|
15
|
+
<ref name="source" href="/thermostat"/>
|
16
|
+
<abstime name="timestamp" val="2012-01-03T00:00:00"/>
|
17
|
+
</obj>
|
18
|
+
</list>
|
19
|
+
</obj>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<obj href="http://domain/history/" is="obix:History">
|
2
|
+
<int name="count" val="100"/>
|
3
|
+
<abstime name="start" val="2012-01-01T00:00:00"/>
|
4
|
+
<abstime name="end" val="2013-01-01T00:00:00"/>
|
5
|
+
<op name="query" href="query/" in="obix:HistoryFilter" out="obix:HistoryQueryOut"/>
|
6
|
+
<op name="rollup" href="rollup/" in="obix:HistoryRollupIn" out="obix:HistoryRollupOut"/>
|
7
|
+
<feed name="feed" href="feed/" of="obix:HistoryRecord" in="obix:HistoryFilter"/>
|
8
|
+
<str name="tz" val="America/New_York"/>
|
9
|
+
</obj>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<obj href="obix:HistoryQueryOut">
|
2
|
+
<int name="count" val="2"/>
|
3
|
+
<abstime name="start" val="2012-01-01T00:00:00"/>
|
4
|
+
<abstime name="end" val="2013-01-01T00:00:00"/>
|
5
|
+
<list name="data" of="obix:HistoryRecord">
|
6
|
+
<obj>
|
7
|
+
<abstime name="timestamp" val="2012-01-01T00:00:00"/>
|
8
|
+
<real name="value" val="6.4"/>
|
9
|
+
</obj>
|
10
|
+
<obj>
|
11
|
+
<abstime name="timestamp" val="2012-01-01T01:00:00"/>
|
12
|
+
<real name="value" val="6.3"/>
|
13
|
+
</obj>
|
14
|
+
</list>
|
15
|
+
</obj>
|
@@ -0,0 +1 @@
|
|
1
|
+
<unknown val="unknown"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<bool val="true" range="http://example.org/range"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<date val="2007-11-26"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<reltime val="PT15S"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<enum range="/enums/OffSlowFast" val="slow"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<err display="uh oh"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<real val="41.06"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<int val="52"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<obj name="object"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<op href="http://domain/operate" in="obix:Nil" out="obix:Nil"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<ref href="http://obix.org/"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<str val="hello world"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<abstime val="2005-03-09T13:30:00Z"/>
|
@@ -0,0 +1 @@
|
|
1
|
+
<uri val="http://obix.org/"/>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<obj href="http://myhome/thermostat">
|
3
|
+
<real name="spaceTemp" unit="obix:units/fahrenheit" val="67.2"/>
|
4
|
+
<real name="setpoint" unit="obix:units/fahrenheit" val="72.0"/>
|
5
|
+
<bool name="furnaceOn" val="true"/>
|
6
|
+
<obj name="foo">
|
7
|
+
<obj name="bar">
|
8
|
+
<obj name="baz"/>
|
9
|
+
</obj>
|
10
|
+
</obj>
|
11
|
+
</obj>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<obj href="http://domain/watchservice/watch32/" is="obix:Watch" display="Obix Watch">
|
2
|
+
<reltime name="lease" val="PT10S" href="http://domain/watchservice/watch32/lease/" display="10sec" displayName="Lease" writable="true"/>
|
3
|
+
<op name="add" href="http://domain/watchservice/watch32/add/" in="obix:WatchIn" out="obix:WatchOut"/>
|
4
|
+
<op name="remove" href="http://domain/watchservice/watch32/remove/" in="obix:WatchIn" out="obix:Nil"/>
|
5
|
+
<op name="pollChanges" href="http://domain/watchservice/watch32/pollChanges/" in="obix:Nil" out="obix:WatchOut"/>
|
6
|
+
<op name="pollRefresh" href="http://domain/watchservice/watch32/pollRefresh/" in="obix:Nil" out="obix:WatchOut"/>
|
7
|
+
<op name="delete" href="http://domain/watchservice/watch32/delete/" in="obix:Nil" out="obix:Nil"/>
|
8
|
+
</obj>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "active_support/all"
|
5
|
+
|
6
|
+
require "test_helper"
|
7
|
+
|
8
|
+
class AlarmsTest < MiniTest::Unit::TestCase
|
9
|
+
def test_initialize
|
10
|
+
alarms = OBIX::Alarms.new file: "test/fixtures/alarmsubject.xml"
|
11
|
+
|
12
|
+
assert_instance_of OBIX::Alarms, alarms
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_count
|
16
|
+
alarms = OBIX::Alarms.new file: "test/fixtures/alarmsubject.xml"
|
17
|
+
|
18
|
+
assert_equal 3, alarms.count
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_query
|
22
|
+
alarms = OBIX::Alarms.new file: "test/fixtures/alarmsubject.xml"
|
23
|
+
|
24
|
+
OBIX::Objects::Operation.any_instance.
|
25
|
+
expects(
|
26
|
+
:invoke
|
27
|
+
).
|
28
|
+
returns(
|
29
|
+
OBIX.parse file: "test/fixtures/alarmqueryout.xml"
|
30
|
+
)
|
31
|
+
|
32
|
+
alarms = alarms.query start: 1.year.ago, end: 0.seconds.ago
|
33
|
+
|
34
|
+
assert_instance_of OBIX::Objects::List, alarms
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "nokogiri"
|
5
|
+
require "active_support/all"
|
6
|
+
|
7
|
+
require "test_helper"
|
8
|
+
|
9
|
+
class BuilderTest < MiniTest::Unit::TestCase
|
10
|
+
def test_builds
|
11
|
+
obix = OBIX::Builder.new do
|
12
|
+
obj name: "foo", href: "bar" do
|
13
|
+
obj name: "bar" do
|
14
|
+
obj name: "baz"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_equal "foo", obix.object.name
|
20
|
+
assert_equal "bar", obix.object.objects.first.name
|
21
|
+
assert_equal "baz", obix.object.objects.first.objects.first.name
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_only_allows_a_single_root_element
|
25
|
+
assert_raises ArgumentError do
|
26
|
+
obix = OBIX::Builder.new do
|
27
|
+
obj name: "foo"
|
28
|
+
obj name: "bar"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "active_support/all"
|
5
|
+
|
6
|
+
require "test_helper"
|
7
|
+
|
8
|
+
class ConfigurationTest < MiniTest::Unit::TestCase
|
9
|
+
def setup
|
10
|
+
@definitions = OBIX.configuration.definitions.clone
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
OBIX.configuration.definitions = @definitions
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_configures
|
18
|
+
OBIX::Configuration.configure do |config|
|
19
|
+
config.username = "username"
|
20
|
+
config.password = "password"
|
21
|
+
config.scheme = "scheme"
|
22
|
+
config.host = "host"
|
23
|
+
config.timeout = 20
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_equal "username", OBIX::Configuration.username
|
27
|
+
assert_equal "password", OBIX::Configuration.password
|
28
|
+
assert_equal "scheme", OBIX::Configuration.scheme
|
29
|
+
assert_equal "host", OBIX::Configuration.host
|
30
|
+
assert_equal 20, OBIX::Configuration.timeout
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "active_support/all"
|
5
|
+
|
6
|
+
require "test_helper"
|
7
|
+
|
8
|
+
class HistoryTest < MiniTest::Unit::TestCase
|
9
|
+
def test_initialize
|
10
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
11
|
+
|
12
|
+
assert_instance_of OBIX::History, history
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_count
|
16
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
17
|
+
|
18
|
+
assert_equal 100, history.count
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_start
|
22
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
23
|
+
|
24
|
+
assert_equal DateTime.parse("2012-01-01 00:00:00"), history.start
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_end
|
28
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
29
|
+
|
30
|
+
assert_equal DateTime.parse("2013-01-01 00:00:00"), history.end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_timezone
|
34
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
35
|
+
|
36
|
+
assert_equal "America/New_York", history.timezone
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_query
|
40
|
+
history = OBIX::History.new file: "test/fixtures/history.xml"
|
41
|
+
|
42
|
+
OBIX::Objects::Operation.any_instance.
|
43
|
+
expects(
|
44
|
+
:invoke
|
45
|
+
).
|
46
|
+
returns(
|
47
|
+
OBIX.parse file: "test/fixtures/historyqueryout.xml"
|
48
|
+
)
|
49
|
+
|
50
|
+
records = history.query start: 1.year.ago, end: 0.seconds.ago
|
51
|
+
|
52
|
+
assert_instance_of OBIX::Objects::List, records
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "active_support/all"
|
5
|
+
|
6
|
+
require "test_helper"
|
7
|
+
|
8
|
+
class NetworkTest < MiniTest::Unit::TestCase
|
9
|
+
include Net
|
10
|
+
|
11
|
+
def test_get
|
12
|
+
HTTP.
|
13
|
+
expects(
|
14
|
+
:start
|
15
|
+
).
|
16
|
+
with(
|
17
|
+
"example.org", 80, {
|
18
|
+
use_ssl: true,
|
19
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
20
|
+
open_timeout: 10,
|
21
|
+
read_timeout: OBIX.configuration.timeout
|
22
|
+
}
|
23
|
+
).
|
24
|
+
returns(
|
25
|
+
stub code: "200", body: "<body>"
|
26
|
+
)
|
27
|
+
|
28
|
+
body = OBIX::Network.get "http://example.org/"
|
29
|
+
|
30
|
+
assert_equal "<body>", body
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_post
|
34
|
+
HTTP.
|
35
|
+
expects(
|
36
|
+
:start
|
37
|
+
).
|
38
|
+
with(
|
39
|
+
"example.org", 80, {
|
40
|
+
use_ssl: true,
|
41
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
42
|
+
open_timeout: 10,
|
43
|
+
read_timeout: OBIX.configuration.timeout
|
44
|
+
}
|
45
|
+
).
|
46
|
+
returns(
|
47
|
+
stub code: "200", body: "<body>"
|
48
|
+
)
|
49
|
+
|
50
|
+
body = OBIX::Network.post "http://example.org/"
|
51
|
+
|
52
|
+
assert_equal "<body>", body
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_post_with_object
|
56
|
+
HTTP.
|
57
|
+
expects(
|
58
|
+
:start
|
59
|
+
).
|
60
|
+
with(
|
61
|
+
"example.org", 80, {
|
62
|
+
use_ssl: true,
|
63
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
64
|
+
open_timeout: 10,
|
65
|
+
read_timeout: OBIX.configuration.timeout
|
66
|
+
}
|
67
|
+
).
|
68
|
+
returns(
|
69
|
+
stub code: "200", body: "<body>"
|
70
|
+
)
|
71
|
+
|
72
|
+
object = mock
|
73
|
+
|
74
|
+
object.
|
75
|
+
expects(
|
76
|
+
:to_xml
|
77
|
+
).
|
78
|
+
returns(
|
79
|
+
fixture "objects/string.xml"
|
80
|
+
)
|
81
|
+
|
82
|
+
body = OBIX::Network.post "http://example.org/", object
|
83
|
+
|
84
|
+
assert_equal "<body>", body
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_bad_response
|
88
|
+
HTTP.
|
89
|
+
expects(
|
90
|
+
:start
|
91
|
+
).
|
92
|
+
returns(
|
93
|
+
stub code: "500", body: nil
|
94
|
+
)
|
95
|
+
|
96
|
+
assert_raises OBIX::Network::Error do
|
97
|
+
OBIX::Network.get "http://example.org/"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_expands_relative_urls
|
102
|
+
HTTP.
|
103
|
+
expects(
|
104
|
+
:start
|
105
|
+
).
|
106
|
+
with(
|
107
|
+
"example.org", 80, {
|
108
|
+
use_ssl: true,
|
109
|
+
verify_mode: OpenSSL::SSL::VERIFY_NONE,
|
110
|
+
open_timeout: 10,
|
111
|
+
read_timeout: OBIX.configuration.timeout
|
112
|
+
}
|
113
|
+
).
|
114
|
+
returns(
|
115
|
+
stub code: "200", body: "<body>"
|
116
|
+
)
|
117
|
+
|
118
|
+
body = OBIX::Network.get "/relative/url"
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_times_out
|
122
|
+
HTTP.
|
123
|
+
expects(
|
124
|
+
:start
|
125
|
+
).
|
126
|
+
raises(
|
127
|
+
::Timeout::Error
|
128
|
+
)
|
129
|
+
|
130
|
+
assert_raises OBIX::Network::Timeout do
|
131
|
+
OBIX::Network.get "http://example.org/"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "obix"
|
2
|
+
require "minitest/unit"
|
3
|
+
require "minitest/autorun"
|
4
|
+
require "active_support/all"
|
5
|
+
|
6
|
+
require "test_helper"
|
7
|
+
|
8
|
+
class BaseTest < MiniTest::Unit::TestCase
|
9
|
+
def test_parses_valid_obix
|
10
|
+
thermostat = OBIX.parse file: "test/fixtures/valid.xml"
|
11
|
+
|
12
|
+
assert_equal "http://myhome/thermostat", thermostat.href
|
13
|
+
|
14
|
+
temperature = thermostat.objects.find { |obj| obj.name == "spaceTemp" }
|
15
|
+
|
16
|
+
assert_equal thermostat, temperature.parent
|
17
|
+
assert_equal 67.2, temperature.val
|
18
|
+
assert_equal "obix:units/fahrenheit", temperature.unit
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_fails_to_parse_invalid_obix
|
22
|
+
assert_raises OBIX::Objects::UnknownObjectError do
|
23
|
+
unknown = OBIX.parse file: "test/fixtures/invalid.xml"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_finds_objects
|
28
|
+
builder = OBIX::Builder.new do
|
29
|
+
obj name: "foo" do
|
30
|
+
obj name: "bar"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
foo = builder.object
|
35
|
+
|
36
|
+
bar = foo.find :bar
|
37
|
+
|
38
|
+
assert_equal "bar", bar.name
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_serializes_to_string
|
42
|
+
thermostat = OBIX.parse file: "test/fixtures/valid.xml"
|
43
|
+
|
44
|
+
assert_equal "#<OBIX::Objects::Object href: \"http://myhome/thermostat\">", thermostat.to_s
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_serializes_to_xml
|
48
|
+
xml = fixture "valid.xml"
|
49
|
+
|
50
|
+
thermostat = OBIX.parse string: xml
|
51
|
+
|
52
|
+
assert_equal xml, thermostat.to_xml
|
53
|
+
end
|
54
|
+
end
|