summaryrefslogtreecommitdiffstats
path: root/source/stf
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2004-03-09 11:15:44 +0000
committerAndrew Bartlett <abartlet@samba.org>2004-03-09 11:15:44 +0000
commita893a324f37e6a171719db8ffffe66df31c2dbaa (patch)
tree3207c425030de291159b97ccaa8414a828133d0b /source/stf
parent44d304f84c4ba5a832d5e3848ae0d04d5438ac15 (diff)
downloadsamba-a893a324f37e6a171719db8ffffe66df31c2dbaa.tar.gz
samba-a893a324f37e6a171719db8ffffe66df31c2dbaa.tar.xz
samba-a893a324f37e6a171719db8ffffe66df31c2dbaa.zip
Given how core this code is, I figure it should have it's own testsuite.
Big thanks to tpot and mbp for showing how easy it can be to write a simple unit test, and for providing the STF. This also changes the strstr_m() code to use strstr_w() (avoiding duplication) and fixes it so that it passes the STF. (We now always restart before doing the unicode run, until sombody can show me why the testsuite is wrong). Andrew Bartlett
Diffstat (limited to 'source/stf')
-rwxr-xr-xsource/stf/strings.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/source/stf/strings.py b/source/stf/strings.py
index 328849b1ceb..86f7acdeb47 100755
--- a/source/stf/strings.py
+++ b/source/stf/strings.py
@@ -94,8 +94,52 @@ class StrCaseCmp(comfychair.TestCase):
for a, b, expect in cases:
self.run_strcmp(a, b, expect)
+class strstr_m(comfychair.TestCase):
+ """String comparisons in simple ASCII"""
+ def run_strstr(self, a, b, expect):
+ out, err = self.runcmd('t_strstr \"%s\" \"%s\"' % (a.encode('utf-8'), b.encode('utf-8')))
+ if (out != (expect + '\n').encode('utf-8')):
+ self.fail("comparison failed:\n"
+ " a=%s\n"
+ " b=%s\n"
+ " expected=%s\n"
+ " result=%s\n" % (`a`, `b`, `expect+'\n'`, `out`))
+
+ def runtest(self):
+ # A, B, strstr_m(A, B)
+ cases = [('hello', 'hello', 'hello'),
+ ('hello', 'goodbye', '(null)'),
+ ('goodbye', 'hello', '(null)'),
+ ('hell', 'hello', '(null)'),
+ ('hello', 'hell', 'hello'),
+ ('', '', ''),
+ ('a', '', 'a'),
+ ('', 'a', '(null)'),
+ ('a', 'A', '(null)'),
+ ('aa', 'aA', '(null)'),
+ ('Aa', 'aa', '(null)'),
+ ('%v foo', '%v', '%v foo'),
+ ('foo %v foo', '%v', '%v foo'),
+ ('foo %v', '%v', '%v'),
+ ('longstring ' * 100, 'longstring ' * 99, 'longstring ' * 100),
+ ('longstring ' * 99, 'longstring ' * 100, '(null)'),
+ ('longstring a' * 99, 'longstring ' * 100 + 'a', '(null)'),
+ ('longstring ' * 100 + 'a', 'longstring ' * 100, 'longstring ' * 100 + 'a'),
+ (KATAKANA_LETTER_A, KATAKANA_LETTER_A + 'bcd', '(null)'),
+ (KATAKANA_LETTER_A + 'bcde', KATAKANA_LETTER_A + 'bcd', KATAKANA_LETTER_A + 'bcde'),
+ ('d'+KATAKANA_LETTER_A + 'bcd', KATAKANA_LETTER_A + 'bcd', KATAKANA_LETTER_A + 'bcd'),
+ ('d'+KATAKANA_LETTER_A + 'bd', KATAKANA_LETTER_A + 'bcd', '(null)'),
+
+ ('e'+KATAKANA_LETTER_A + 'bcdf', KATAKANA_LETTER_A + 'bcd', KATAKANA_LETTER_A + 'bcdf'),
+ (KATAKANA_LETTER_A, KATAKANA_LETTER_A + 'bcd', '(null)'),
+ (KATAKANA_LETTER_A*3, 'a', '(null)'),
+ ]
+ for a, b, expect in cases:
+ self.run_strstr(a, b, expect)
+
# Define the tests exported by this module
tests = [StrCaseCmp,
+ strstr_m,
PushUCS2_Tests]
# Handle execution of this file as a main program