Browse Source

Tests for Unicode compliance

tags/unicode
Jim Paris 11 years ago
parent
commit
c083d63c96
2 changed files with 61 additions and 0 deletions
  1. +41
    -0
      tests/test_client.py
  2. +20
    -0
      tests/test_cmdline.py

+ 41
- 0
tests/test_client.py View File

@@ -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)

+ 20
- 0
tests/test_cmdline.py View File

@@ -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")

Loading…
Cancel
Save