diff --git a/tests/test_client.py b/tests/test_client.py index 7021f75..aab87c2 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import nilmdb from nilmdb.utils.printf import * from nilmdb.client import ClientError, ServerError @@ -82,6 +84,8 @@ class TestClient(object): # Bad layout type with assert_raises(ClientError): client.stream_create("/newton/prep", "NoSuchLayout") + + # Create three streams client.stream_create("/newton/prep", "PrepData") client.stream_create("/newton/raw", "RawData") client.stream_create("/newton/zzz/rawnotch", "RawNotchedData") @@ -277,3 +281,40 @@ class TestClient(object): "end": "123" }, retjson=False) if "transfer-encoding: chunked" not in client.http._headers.lower(): warnings.warn("Non-chunked HTTP response for /stream/extract") + + def test_client_7_unicode(self): + # Basic Unicode tests + client = nilmdb.Client(url = "http://localhost:12380/") + + # Delete streams that exist + for stream in client.stream_list(): + client.stream_destroy(stream[0]) + + # Database is empty + eq_(client.stream_list(), []) + + # Create Unicode stream, match it + raw = [ u"/düsseldorf/raw", u"uint16_6" ] + prep = [ u"/düsseldorf/prep", u"uint16_6" ] + client.stream_create(*raw) + eq_(client.stream_list(), [raw]) + eq_(client.stream_list(layout=raw[1]), [raw]) + eq_(client.stream_list(path=raw[0]), [raw]) + client.stream_create(*prep) + eq_(client.stream_list(), [prep, raw]) + + # Set / get metadata with Unicode keys and values + eq_(client.stream_get_metadata(raw[0]), {}) + eq_(client.stream_get_metadata(prep[0]), {}) + meta1 = { u"alpha": u"α", + u"β": u"beta" } + meta2 = { u"alpha": u"α" } + meta3 = { u"β": u"beta" } + client.stream_set_metadata(prep[0], meta1) + client.stream_update_metadata(prep[0], {}) + client.stream_update_metadata(raw[0], meta2) + client.stream_update_metadata(raw[0], meta3) + eq_(client.stream_get_metadata(prep[0]), meta1) + eq_(client.stream_get_metadata(raw[0]), meta1) + eq_(client.stream_get_metadata(raw[0], [ "alpha" ]), meta2) + eq_(client.stream_get_metadata(raw[0], [ "alpha", "β" ]), meta1) diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index 6f29683..5138459 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + import nilmdb from nilmdb.utils.printf import * import nilmdb.cmdline @@ -520,3 +522,21 @@ class TestCmdline(object): # Make sure it was created empty self.ok("list --detail --path " + path) self.contain("(no intervals)") + + def test_cmdline_11_unicode(self): + # Unicode paths. + self.ok("destroy /newton/asdf/qwer") + self.ok("destroy /newton/prep") + self.ok("destroy /newton/raw") + self.ok("destroy /newton/zzz") + + self.ok(u"create /düsseldorf/raw uint16_6") + self.ok("list --detail") + self.contain(u"/düsseldorf/raw uint16_6") + self.contain("(no intervals)") + + # Unicode metadata + self.ok(u"metadata /düsseldorf/raw --set α=beta 'γ=δ'") + self.ok(u"metadata /düsseldorf/raw --update 'α=β ε τ α'") + self.ok(u"metadata /düsseldorf/raw") + self.match(u"α=β ε τ α\nγ=δ\n")