/* * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nuxeo - initial API and implementation * * $Id$ */ package org.eclipse.ecr.core.query.sql.model; import junit.framework.TestCase; import org.nuxeo.common.collections.SerializableArrayMap; import org.nuxeo.common.utils.SerializableHelper; import org.eclipse.ecr.core.query.sql.SQLQueryParser; /** * Test that serialization of SQLQuery instances actually works. * <p> * This test case certainly doesn't cover all neeeded aspects. One should also * be concerned that standard serialization might be inefficient in terms of * weight for such object and rely on something else if possible. * * @author <a href="mailto:gracinet@nuxeo.com">Georges Racinet</a> * */ public class TestSerialization extends TestCase { public static void check(String query) { SQLQuery sql = SQLQueryParser.parse(query); assertTrue(SerializableHelper.isSerializable(sql)); } public void testQuery1() { check("SELECT dc:title, dc:dublincore FROM Document " + "WHERE dc:created > TIMESTAMP '2007-02-03 0:0'"); } public void testQuery2() { check("SELECT * FROM Document "); } @SuppressWarnings("unchecked") public void testSerializableArrayMap() throws Exception { SerializableArrayMap<String, Operand> elements = new SerializableArrayMap<String, Operand>(); elements.put("abc", new StringLiteral("table")); assertEquals(1, elements.size()); SerializableArrayMap<String, Operand> elements2 = (SerializableArrayMap<String, Operand>) SerializableHelper.serializeUnserialize(elements); assertEquals(1, elements2.size()); } public void testSelect() throws Exception { SelectList elements = new SelectList(); elements.put("abc", new StringLiteral("table")); assertEquals(1, elements.size()); assertTrue(SerializableHelper.isSerializable(new StringLiteral("x"))); assertTrue(SerializableHelper.isSerializable(elements)); assertTrue(SerializableHelper.isSerializable(new SelectClause(elements))); SelectList elements2 = (SelectList) SerializableHelper.serializeUnserialize(elements); assertEquals(1, elements2.size()); } public void testFrom() throws Exception { FromList elements = new FromList(); elements.put("abc", "ABC"); assertTrue(SerializableHelper.isSerializable(elements)); assertTrue(SerializableHelper.isSerializable(new FromClause(elements))); FromList elements2 = (FromList) SerializableHelper.serializeUnserialize(elements); assertEquals(1, elements2.size()); } public void testSQLQUery() throws Exception { String queryString = "SELECT * FROM Document WHERE kw1='vie' AND kw2='mechante'"; SQLQuery parsed = SQLQueryParser.parse(queryString); assertEquals( "SELECT * FROM Document WHERE kw1='vie' AND kw2='mechante'", parsed.toString()); assertEquals(0, parsed.getSelectClause().elements.size()); assertEquals(1, parsed.getFromClause().elements.size()); SQLQuery dumped = (SQLQuery) SerializableHelper.serializeUnserialize(parsed); assertEquals( "SELECT * FROM Document WHERE kw1='vie' AND kw2='mechante'", dumped.toString()); assertEquals(0, dumped.getSelectClause().elements.size()); assertEquals(1, dumped.getFromClause().elements.size()); } }