diff options
Diffstat (limited to 'ext/librethinkdbxx/test/upstream/datum/string.yaml')
-rw-r--r-- | ext/librethinkdbxx/test/upstream/datum/string.yaml | 329 |
1 files changed, 0 insertions, 329 deletions
diff --git a/ext/librethinkdbxx/test/upstream/datum/string.yaml b/ext/librethinkdbxx/test/upstream/datum/string.yaml deleted file mode 100644 index c518175d..00000000 --- a/ext/librethinkdbxx/test/upstream/datum/string.yaml +++ /dev/null @@ -1,329 +0,0 @@ -desc: Tests of converstion to and from the RQL string type -tests: - - - def: - cd: japanese_hello = 'こんにちは' - # Python supports unicode strings with the u'' pattern, except 3.0-3.2 - py: japanese_hello = u'こんにちは' - py3.0: japanese_hello = 'こんにちは' - py3.1: japanese_hello = 'こんにちは' - py3.2: japanese_hello = 'こんにちは' - - # Simple strings - - cd: - - r('str') - - r.expr('str') - py: r.expr('str') - ot: "str" - - cd: - - r("str") - - r.expr("str") - py: r.expr("str") - ot: "str" - - # Unicode - - - cd: - py: - cd: r.expr(u'str') - ot: u'str' - py3.0: r.expr('str') - py3.1: r.expr('str') - py3.2: r.expr('str') - ot: 'str' - - - cd: r.expr(japanese_hello) - ot: - cd: 'こんにちは' - py: u'こんにちは' - py3.0: 'こんにちは' - py3.1: 'こんにちは' - py3.2: 'こんにちは' - - - cd: r.expr('foo').type_of() - ot: 'STRING' - - # test coercions - - cd: r.expr('foo').coerce_to('string') - ot: 'foo' - - cd: r.expr('-1.2').coerce_to('NUMBER') - ot: -1.2 - - cd: r.expr('--1.2').coerce_to('NUMBER') - ot: err("ReqlQueryLogicError", "Could not coerce `--1.2` to NUMBER.", []) - - cd: r.expr('-1.2-').coerce_to('NUMBER') - ot: err("ReqlQueryLogicError", "Could not coerce `-1.2-` to NUMBER.", []) - - cd: r.expr('0xa').coerce_to('NUMBER') - ot: 10 - - cd: r.expr('inf').coerce_to('NUMBER') - ot: err("ReqlQueryLogicError", "Non-finite number: inf", []) - - # count is defined as the number of unicode codepoints - - cd: r.expr('hello, world!').count() - ot: 13 - - cd: r.expr(japanese_hello).count() - ot: 5 - - # slice is defined on unicode codepoints - - cd: r.expr('hello').slice(1) - ot: 'ello' - - cd: r.expr('hello').slice(-1) - ot: 'o' - - cd: r.expr('hello').slice(-4,3) - ot: 'el' - - cd: r.expr('hello').slice(-99) - ot: 'hello' - - cd: r.expr('hello').slice(0) - ot: 'hello' - - cd: r.expr(japanese_hello).slice(1) - ot: - cd: 'んにちは' - py: u'んにちは' - py3.0: 'んにちは' - py3.1: 'んにちは' - py3.2: 'んにちは' - - cd: r.expr(japanese_hello).slice(1,2) - ot: - cd: 'ん' - py: u'ん' - py3.0: 'ん' - py3.1: 'ん' - py3.2: 'ん' - - cd: r.expr(japanese_hello).slice(-3) - ot: - cd: 'にちは' - py: u'にちは' - py3.0: 'にちは' - py3.1: 'にちは' - py3.2: 'にちは' - - # This is how these edge cases are handled in Python. - - cd: r.expr('').split() - ot: [] - - cd: r.expr('').split(null) - ot: [] - - cd: r.expr('').split(' ') - ot: [''] - - cd: r.expr('').split('') - ot: [] - - cd: r.expr('').split(null, 5) - ot: [] - - cd: r.expr('').split(' ', 5) - ot: [''] - - cd: r.expr('').split('', 5) - ot: [] - - - cd: r.expr('aaaa bbbb cccc ').split() - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr('aaaa bbbb cccc ').split(null) - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr('aaaa bbbb cccc ').split(' ') - ot: ['aaaa', 'bbbb', '', 'cccc', ''] - - cd: r.expr('aaaa bbbb cccc ').split('') - ot: ['a', 'a', 'a', 'a', ' ', 'b', 'b', 'b', 'b', ' ', ' ', 'c', 'c', 'c', 'c', ' '] - - cd: r.expr('aaaa bbbb cccc ').split('b') - ot: ['aaaa ', '', '', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('bb') - ot: ['aaaa ', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split(' bbbb ') - ot: ['aaaa', 'cccc '] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split('bb') - ot: ['aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ') - ot: ['aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ') - ot: ['aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr('aaaa bbbb cccc ').split(null, 3) - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr('aaaa bbbb cccc ').split(' ', 5) - ot: ['aaaa', 'bbbb', '', 'cccc', ''] - - cd: r.expr('aaaa bbbb cccc ').split('', 5) - ot: ['a', 'a', 'a', 'a', ' ', 'bbbb cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('b', 5) - ot: ['aaaa ', '', '', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('bb', 3) - ot: ['aaaa ', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split(' bbbb ', 2) - ot: ['aaaa', 'cccc '] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split('bb', 6) - ot: ['aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: ['aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 3) - ot: ['aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr('aaaa bbbb cccc ').split(null, 2) - ot: ['aaaa', 'bbbb', 'cccc '] - - cd: r.expr("a b ").split(null, 2) - ot: ["a", "b"] - - cd: r.expr('aaaa bbbb cccc ').split(' ', 4) - ot: ['aaaa', 'bbbb', '', 'cccc', ''] - - cd: r.expr('aaaa bbbb cccc ').split('', 4) - ot: ['a', 'a', 'a', 'a', ' bbbb cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('b', 4) - ot: ['aaaa ', '', '', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('bb', 2) - ot: ['aaaa ', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split(' bbbb ', 1) - ot: ['aaaa', 'cccc '] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split('bb', 5) - ot: ['aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 1) - ot: ['aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: ['aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr('aaaa bbbb cccc ').split(null, 1) - ot: ['aaaa', 'bbbb cccc '] - - cd: r.expr('aaaa bbbb cccc ').split(' ', 2) - ot: ['aaaa', 'bbbb', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('', 2) - ot: ['a', 'a', 'aa bbbb cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('b', 2) - ot: ['aaaa ', '', 'bb cccc '] - - cd: r.expr('aaaa bbbb cccc ').split('bb', 2) - ot: ['aaaa ', '', ' cccc '] - - cd: r.expr('aaaa bbbb cccc ').split(' bbbb ', 2) - ot: ['aaaa', 'cccc '] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split('bb', 2) - ot: ['aaaa ', '', ' cccc b d bb e bbbb f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: ['aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr('aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: ['aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr(' ').split() - ot: [] - - cd: r.expr(' ').split(null) - ot: [] - - cd: r.expr(' ').split(' ') - ot: ['', '', ''] - - cd: r.expr(' ').split(null, 5) - ot: [] - - cd: r.expr(' ').split(' ', 5) - ot: ['', '', ''] - - - cd: r.expr(' aaaa bbbb cccc ').split() - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr(' aaaa bbbb cccc ').split(null) - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr(' aaaa bbbb cccc ').split(' ') - ot: ['', '', 'aaaa', 'bbbb', '', 'cccc', ''] - - cd: r.expr(' aaaa bbbb cccc ').split('b') - ot: [' aaaa ', '', '', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('bb') - ot: [' aaaa ', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split(' bbbb ') - ot: [' aaaa', 'cccc '] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split('bb') - ot: [' aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ') - ot: [' aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ') - ot: [' aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr(' aaaa bbbb cccc ').split(null, 3) - ot: ['aaaa', 'bbbb', 'cccc'] - - cd: r.expr(' aaaa bbbb cccc ').split(' ', 5) - ot: ['', '', 'aaaa', 'bbbb', '', 'cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('b', 5) - ot: [' aaaa ', '', '', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('bb', 3) - ot: [' aaaa ', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split(' bbbb ', 2) - ot: [' aaaa', 'cccc '] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split('bb', 6) - ot: [' aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: [' aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 3) - ot: [' aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr(' aaaa bbbb cccc ').split(null, 2) - ot: ['aaaa', 'bbbb', 'cccc '] - - cd: r.expr("a b ").split(null, 2) - ot: ["a", "b"] - - cd: r.expr(' aaaa bbbb cccc ').split(' ', 4) - ot: ['', '', 'aaaa', 'bbbb', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('b', 4) - ot: [' aaaa ', '', '', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('bb', 2) - ot: [' aaaa ', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split(' bbbb ', 1) - ot: [' aaaa', 'cccc '] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split('bb', 5) - ot: [' aaaa ', '', ' cccc b d ', ' e ', '', ' f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 1) - ot: [' aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: [' aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr(' aaaa bbbb cccc ').split(null, 1) - ot: ['aaaa', 'bbbb cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split(' ', 2) - ot: ['', '', 'aaaa bbbb cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('b', 2) - ot: [' aaaa ', '', 'bb cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split('bb', 2) - ot: [' aaaa ', '', ' cccc '] - - cd: r.expr(' aaaa bbbb cccc ').split(' bbbb ', 2) - ot: [' aaaa', 'cccc '] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split('bb', 2) - ot: [' aaaa ', '', ' cccc b d bb e bbbb f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: [' aaaa', 'cccc b d bb e bbbb f'] - - cd: r.expr(' aaaa bbbb cccc b d bb e bbbb f').split(' bbbb ', 2) - ot: [' aaaa', 'cccc b d bb e', 'f'] - - - cd: r.expr("abc-dEf-GHJ").upcase() - ot: "ABC-DEF-GHJ" - - cd: r.expr("abc-dEf-GHJ").downcase() - ot: "abc-def-ghj" - - # Same 3.0-3.2 caveats - - py: - cd: r.expr(u"f\u00e9oo").split("") - ot: [u"f", u"\u00e9", u"o", u"o"] - py3.0: r.expr("f\u00e9oo").split("") - py3.1: r.expr("f\u00e9oo").split("") - py3.2: r.expr("f\u00e9oo").split("") - cd: r.expr("f\u00e9oo").split("") - ot: ["f", "\u00e9", "o", "o"] - - - py: - cd: r.expr(u"fe\u0301oo").split("") - ot: [u"f", u"e\u0301", u"o", u"o"] - py3.0: r.expr("fe\u0301oo").split("") - py3.1: r.expr("fe\u0301oo").split("") - py3.2: r.expr("fe\u0301oo").split("") - cd: r.expr("fe\u0301oo").split("") - ot: ["f", "e\u0301", "o", "o"] - - ## Unicode spacing characters. - - ## original set from previous work: - - cd: r.expr("foo bar\tbaz\nquux\rfred\u000bbarney\u000cwilma").split() - py: - cd: r.expr(u"foo bar\tbaz\nquux\rfred\u000bbarney\u000cwilma").split() - ot: ["foo", "bar", "baz", "quux", "fred", "barney", "wilma"] - py3.0: r.expr("foo bar\tbaz\nquux\rfred\u000bbarney\u000cwilma").split() - py3.1: r.expr("foo bar\tbaz\nquux\rfred\u000bbarney\u000cwilma").split() - py3.2: r.expr("foo bar\tbaz\nquux\rfred\u000bbarney\u000cwilma").split() - ot: ["foo", "bar", "baz", "quux", "fred", "barney", "wilma"] - - ## some specialized Unicode horrors: - ## - U+00A0 is nonbreaking space and is in the Zs category - ## - U+0085 is the next line character and is not in the Zs category but is considered whitespace - ## - U+2001 is em quad space and is in the Zs category - ## - U+200B is a zero width space and is not in the Zs category and is not considered whitespace - ## - U+2060 is a word joining zero width nonbreaking space and is NOT in any of the Z categories - ## - U+2028 is a line separator and is in the Zl category - ## - U+2029 is a paragraph separator and is in the Zp category - - py: - cd: r.expr(u"foo\u00a0bar\u2001baz\u2060quux\u2028fred\u2028barney\u2029wilma\u0085betty\u200b").split() - ot: ["foo", "bar", u"baz\u2060quux", "fred", "barney", "wilma", u"betty\u200b"] - py3.0: r.expr("foo\u00a0bar\u2001baz\u2060quux\u2028fred\u2028barney\u2029wilma\u0085betty\u200b").split() - py3.1: r.expr("foo\u00a0bar\u2001baz\u2060quux\u2028fred\u2028barney\u2029wilma\u0085betty\u200b").split() - py3.2: r.expr("foo\u00a0bar\u2001baz\u2060quux\u2028fred\u2028barney\u2029wilma\u0085betty\u200b").split() - cd: r.expr("foo\u00a0bar\u2001baz\u2060quux\u2028fred\u2028barney\u2029wilma\u0085betty\u200b").split() - ot: ["foo", "bar", "baz\u2060quux", "fred", "barney", "wilma", "betty\u200b"] |