Merge branch 'master' of http://git.kpe.io/clsql
[clsql.git] / tests / test-i18n.lisp
index 59f9b7aa2293c51100febf6728402a401468424c..b00c6d5529b028763cf458c719be2a509ff17ec1 100644 (file)
@@ -4,10 +4,10 @@
 ;;;;
 ;;;; Name:    test-i18n.lisp
 ;;;; Purpose: Tests for passing non-ascii encoded strings to db and back
-;;;; Author:  Nathan Bird
+;;;; Author:  Nathan Bird & Kevin M. Rosenberg
 ;;;; Created: Feb 2010
 ;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
+;;;; This file is part of CLSQL.
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
 
 (in-package #:clsql-tests)
 
+(setq *rt-i18n*
+      '(
+
 ;;; The point of these two is to require proper encoding support
 ;;; UTF-8 for example can handle these easily.
 ;; I show this as a 20char string and 27 bytes in utf-8
 (deftest :basic/i18n/1
-    (first (query "SELECT 'Iñtërnâtiônàlizætiøn'"
-                 :flatp t :field-names nil))
-  "Iñtërnâtiônàlizætiøn")
+ (let ((uffi:*default-foreign-encoding* :utf-8))
+   (first (query "SELECT 'Iñtërnâtiônàlizætiøn'"
+                 :flatp t :field-names nil)))
+ "Iñtërnâtiônàlizætiøn")
 
 ;; the z in this one is even stronger
 ;; I show this as a 20char string and 28 bytes in utf-8
 (deftest :basic/i18n/2
-    (first (query "SELECT 'Iñtërnâtiônàližætiøn'"
-                 :flatp t :field-names nil))
-  "Iñtërnâtiônàližætiøn")
+ (let ((uffi:*default-foreign-encoding* :utf-8))
+   (first (query "SELECT 'Iñtërnâtiônàližætiøn'"
+                 :flatp t :field-names nil)))
+ "Iñtërnâtiônàližætiøn")
+
+(deftest :basic/i18n/big/1
+    (let ((test-string (with-output-to-string (str)
+                         (dotimes (n 250)
+                           (write-sequence "Iñtërnâtiônàližætiøn" str)))))
+      (with-dataset *ds-bigtext*
+        (clsql-sys:execute-command
+         (format nil
+                 "INSERT INTO testbigtext (a) VALUES ('~a')"
+                 test-string))
+        (let ((res (first (clsql:query "SELECT a from testbigtext" :flatp t :field-names nil))))
+          (assert (equal test-string res) (test-string res)
+                  "Returned internationalization string was incorrect. Test :basic/i18n/big/1")))))
+
+))