19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.database;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.CursorWindow;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.PerformanceTestCase;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Arrays;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class CursorWindowTest extends TestCase implements PerformanceTestCase {
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isPerformanceOnly() {
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return false;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These test can only be run once.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int startPerformance(Intermediates intermediates) {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 1;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
385a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    public void testConstructor_WithName() {
395a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        CursorWindow window = new CursorWindow("MyWindow");
405a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals("MyWindow", window.getName());
415a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals(0, window.getStartPosition());
425a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        window.close();
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
445a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown
455a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    @SmallTest
465a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    public void testConstructorWithEmptyName() {
475a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        CursorWindow window = new CursorWindow("");
485a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals("<unnamed>", window.getName());
495a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals(0, window.getStartPosition());
505a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        window.close();
515a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    }
525a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SmallTest
545a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    public void testConstructorWithNullName() {
555a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        CursorWindow window = new CursorWindow(null);
565a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals("<unnamed>", window.getName());
575a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals(0, window.getStartPosition());
585a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        window.close();
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
605a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown
615a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    @SmallTest
625a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    public void testDeprecatedConstructor() {
635a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        @SuppressWarnings("deprecation")
645a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        CursorWindow window = new CursorWindow(true /*this argument is ignored*/);
655a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals("<unnamed>", window.getName());
665a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        assertEquals(0, window.getStartPosition());
675a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        window.close();
685a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    }
695a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown
705a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    @SmallTest
715a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    public void testValues() {
725a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        CursorWindow window = new CursorWindow("MyWindow");
735a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        doTestValues(window);
745a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown        window.close();
755a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown    }
765a05c23f3d6a1a895bf5917aacd8bd9a5302ba00Jeff Brown
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void doTestValues(CursorWindow window) {
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.setNumColumns(7));
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.allocRow());
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        double db1 = 1.26;
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putDouble(db1, 0, 0));
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        double db2 = window.getDouble(0, 0);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(db1, db2);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        long int1 = Long.MAX_VALUE;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putLong(int1, 0, 1));
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        long int2 = window.getLong(0, 1);
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(int1, int2);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putString("1198032740000", 0, 3));
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals("1198032740000", window.getString(0, 3));
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(1198032740000L, window.getLong(0, 3));
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putString(Long.toString(1198032740000L), 0, 3));
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(Long.toString(1198032740000L), window.getString(0, 3));
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(1198032740000L, window.getLong(0, 3));
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putString(Double.toString(42.0), 0, 4));
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(Double.toString(42.0), window.getString(0, 4));
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertEquals(42.0, window.getDouble(0, 4));
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // put blob
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte[] blob = new byte[1000];
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        byte value = 99;
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Arrays.fill(blob, value);
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(window.putBlob(blob, 0, 6));
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        assertTrue(Arrays.equals(blob, window.getBlob(0, 6)));
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
110