db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kmars...@apache.org
Subject svn commit: r550553 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang: CharUTF8.java CharUTF8Test.java _Suite.java
Date Mon, 25 Jun 2007 17:08:23 GMT
Author: kmarsden
Date: Mon Jun 25 10:08:21 2007
New Revision: 550553

URL: http://svn.apache.org/viewvc?view=rev&rev=550553
Log:
DERBY-2867 Convert lang/CharUTF8 test to JUnit

Contributed by Ugo Matrangolo


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java
  (with props)
Removed:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8.java
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java?view=auto&rev=550553
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java
Mon Jun 25 10:08:21 2007
@@ -0,0 +1,139 @@
+/**
+ *  Derby - Class org.apache.derbyTesting.functionTests.tests.lang.CharUTF8Test
+ *  
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+
+/**
+ * Test all characters written through the UTF8 format.
+ */
+public class CharUTF8Test extends BaseJDBCTestCase {
+	
+	private PreparedStatement psSet;
+	private PreparedStatement psGet;
+	
+	/**
+	 * Basic constructor.
+	 */	
+	public CharUTF8Test(String name) {
+		super(name);
+	}
+	
+	/**
+	 * Sets the auto commit to false.
+	 */
+	protected void initializeConnection(Connection conn) throws SQLException {
+		conn.setAutoCommit(false);
+	}
+	
+	/**
+	 * Returns the implemented tests.
+	 * 
+	 * @return An instance of <code>Test</code> with the implemented tests to
+	 *         run.
+	 */
+	public static Test suite() {
+		return new CleanDatabaseTestSetup(new TestSuite(CharUTF8Test.class)) {
+			protected void decorateSQL(Statement stmt) throws SQLException {
+				stmt.execute("CREATE TABLE TEST(id int not null primary key, body varchar(60))");
+			}
+		};
+	}
+
+	protected void setUp() throws Exception {
+		super.setUp();
+		psSet = prepareStatement("insert into test values(?,?)");
+		psGet = prepareStatement("select body from test where id=?");
+	}
+	
+	protected void tearDown() throws Exception {
+		psSet.close();
+		psGet.close();
+		super.tearDown();
+	}
+	
+	/**
+	 * Tests the correct handling of UTF8 char sequence. 
+	 * 
+	 * This test iteratively writes on a test table a sequence of 60 UTF8 chars; next, in the
same iteration, it 
+	 * reads the string and checks if the written sequence is correct.
+	 * 
+	 * @throws SQLException
+	 */
+	public void testUTF8() throws SQLException {
+		int off = 0;
+		
+		for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; i++) {
+			StringBuffer buff = new StringBuffer();
+			buff.append((char) i);
+
+			if ((buff.length() == 60) || (i == Character.MAX_VALUE)) {
+				String text = buff.toString();
+				//System.out.println("Testing with last char value " + i + " length=" + text.length());
+				
+				setBody(i, text); // set the text
+				
+				String res = getBody(i); // now read the text
+				assertEquals("Fetched string is incorrect (length = " + buff.length() + ")", text, res);
+
+				buff.setLength(0);
+			}
+		}		
+	}
+	
+	/**
+	 * Checks if an ampty UTF8 string is correctly handled.
+	 * 
+	 * @throws SQLException
+	 */
+	public void testEmptyStringUTF8() throws SQLException {
+		setBody(-1, "");
+		assertEquals("Empty string incorrect!", "", getBody(-1));
+	}
+	
+	private void setBody(int key, String body) throws SQLException {       
+		psSet.setInt(1, key);
+		psSet.setString(2, body);
+		psSet.executeUpdate();
+	}
+        
+    private String getBody(int key) throws SQLException {
+		String result = "NO RESULT";
+
+		psGet.setInt(1, key);
+		ResultSet rs = psGet.executeQuery();
+		if (rs.next()) {
+			result = rs.getString(1);
+		}
+		rs.close();
+		return result;
+	}
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java?view=diff&rev=550553&r1=550552&r2=550553
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
Mon Jun 25 10:08:21 2007
@@ -109,6 +109,7 @@
         suite.addTest(TimestampArithTest.suite());
         suite.addTest(SpillHashTest.suite());
         suite.addTest(CaseExpressionTest.suite());
+        suite.addTest(CharUTF8Test.suite());
         suite.addTest(AggregateClassLoadingTest.suite());
 
         // Add the XML tests, which exist as a separate suite



Mime
View raw message