]> gitweb.factorcode.org Git - factor.git/commitdiff
Unit tests and refactoring for ascii and latin1
authorDaniel Ehrenberg <ehrenbed@carleton.edu>
Thu, 6 Mar 2008 21:07:00 +0000 (15:07 -0600)
committerDaniel Ehrenberg <ehrenbed@carleton.edu>
Thu, 6 Mar 2008 21:07:00 +0000 (15:07 -0600)
extra/io/encodings/ascii/ascii-tests.factor [new file with mode: 0644]
extra/io/encodings/ascii/ascii.factor
extra/io/encodings/latin1/latin1-tests.factor [new file with mode: 0644]
extra/io/encodings/latin1/latin1.factor

diff --git a/extra/io/encodings/ascii/ascii-tests.factor b/extra/io/encodings/ascii/ascii-tests.factor
new file mode 100644 (file)
index 0000000..4f6d288
--- /dev/null
@@ -0,0 +1,9 @@
+USING: io.encodings.string io.encodings.ascii tools.test strings arrays ;
+IN: io.encodings.ascii.tests
+
+[ B{ CHAR: f CHAR: o CHAR: o } ] [ "foo" ascii encode ] unit-test
+[ { 128 } >string ascii encode ] must-fail
+[ B{ 127 } ] [ { 127 } ascii encode ] unit-test
+
+[ "bar" ] [ "bar" ascii decode ] unit-test
+[ { CHAR: b HEX: fffd CHAR: r } ] [ { CHAR: b 233 CHAR: r } ascii decode >array ] unit-test
index fdefc356344a530acd5a3af460dbdab016d06e14..bd71b733f1f919b8f7b5a5c0945e02debfd5d4ea 100644 (file)
@@ -3,13 +3,16 @@
 USING: io io.encodings strings kernel math sequences byte-arrays io.encodings ;
 IN: io.encodings.ascii
 
-: encode-check<= ( string stream max -- )
+: encode-check< ( string stream max -- )
     [ pick <= [ encode-error ] [ stream-write1 ] if ] 2curry each ;
 
+: push-if< ( sbuf character max -- )
+    over <= [ drop HEX: fffd ] when swap push ;
+
 TUPLE: ascii ;
 
 M: ascii stream-write-encoded ( string stream encoding -- )
-    drop 127 encode-check<= ;
+    drop 128 encode-check< ;
 
 M: ascii decode-step
-    drop dup 128 >= [ decode-error ] [ swap push ] if ;
+    drop 128 push-if< ;
diff --git a/extra/io/encodings/latin1/latin1-tests.factor b/extra/io/encodings/latin1/latin1-tests.factor
new file mode 100644 (file)
index 0000000..a89bfe0
--- /dev/null
@@ -0,0 +1,9 @@
+USING: io.encodings.string io.encodings.latin1 tools.test strings arrays ;
+IN: io.encodings.latin1.tests
+
+[ B{ CHAR: f CHAR: o CHAR: o } ] [ "foo" latin1 encode ] unit-test
+[ { 256 } >string latin1 encode ] must-fail
+[ B{ 255 } ] [ { 255 } latin1 encode ] unit-test
+
+[ "bar" ] [ "bar" latin1 decode ] unit-test
+[ { CHAR: b 233 CHAR: r } ] [ { CHAR: b 233 CHAR: r } latin1 decode >array ] unit-test
index 989f45bc642e422f3fef9f9bc77605a176dc8f99..ec01da5983376c5a79d3f8061be2f8d47600be58 100755 (executable)
@@ -6,7 +6,4 @@ IN: io.encodings.latin1
 TUPLE: latin1 ;
 
 M: latin1 stream-write-encoded 
-    drop 255 encode-check<= ;
-
-M: latin1 decode-step
-    drop dup 256 >= [ decode-error ] [ swap push ] if ;
+    drop 256 encode-check< ;