/* * Copyright 2011 Google Inc. All Rights Reserved. * * Licensed 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 com.google.devtools.j2objc.gen; import com.google.devtools.j2objc.GenerationTest; import com.google.devtools.j2objc.ast.Statement; import java.util.List; /** * Verifies that array creation, with or without initializer expressions, are * translated corrected. * * @author Tom Ball */ public class ArrayCreationTest extends GenerationTest { public void testBooleanArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("boolean[] foo = new boolean[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSBooleanArray *foo = [IOSBooleanArray arrayWithLength:3];", result); } public void testByteArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("byte[] foo = new byte[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSByteArray *foo = [IOSByteArray arrayWithLength:3];", result); } public void testCharArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("char[] foo = new char[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSCharArray *foo = [IOSCharArray arrayWithLength:3];", result); } public void testDoubleArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("double[] foo = new double[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSDoubleArray *foo = [IOSDoubleArray arrayWithLength:3];", result); } public void testFloatArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("float[] foo = new float[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSFloatArray *foo = [IOSFloatArray arrayWithLength:3];", result); } public void testIntArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("int[] foo = new int[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSIntArray *foo = [IOSIntArray arrayWithLength:3];", result); } public void testLongArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("long[] foo = new long[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSLongArray *foo = [IOSLongArray arrayWithLength:3];", result); } public void testShortArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("short[] foo = new short[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSShortArray *foo = [IOSShortArray arrayWithLength:3];", result); } public void testObjectArrayCreationNoInitializer() { List<Statement> stmts = translateStatements("Integer[] foo = new Integer[3];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSObjectArray *foo = [IOSObjectArray " + "arrayWithLength:3 type:JavaLangInteger_class_()];", result); } public void testBooleanArrayCreationNoDimension() { List<Statement> stmts = translateStatements("boolean[] foo = { true, false };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSBooleanArray *foo = " + "[IOSBooleanArray arrayWithBooleans:(jboolean[]){ true, false } count:2];", result); } public void testByteArrayCreationNoDimension() { List<Statement> stmts = translateStatements("byte[] foo = { 1, -2 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSByteArray *foo = [IOSByteArray arrayWithBytes:(jbyte[]){ 1, -2 } count:2];", result); } public void testCharArrayCreationNoDimension() { List<Statement> stmts = translateStatements("char[] foo = { 'A', 'z' };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSCharArray *foo = [IOSCharArray arrayWithChars:(jchar[]){ 'A', 'z' } count:2];", result); } public void testDoubleArrayCreationNoDimension() { List<Statement> stmts = translateStatements("double[] foo = { 123.45, 3.1416 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSDoubleArray *foo = " + "[IOSDoubleArray arrayWithDoubles:(jdouble[]){ 123.45, 3.1416 } count:2];", result); } public void testFloatArrayCreationNoDimension() { List<Statement> stmts = translateStatements("float[] foo = { 123.45f, -0.0001f };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSFloatArray *foo = " + "[IOSFloatArray arrayWithFloats:(jfloat[]){ 123.45f, -0.0001f } count:2];", result); } public void testIntArrayCreationNoDimension() { List<Statement> stmts = translateStatements("int[] foo = { -123, 1280000 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSIntArray *foo = [IOSIntArray arrayWithInts:(jint[]){ -123, 1280000 } count:2];", result); } public void testLongArrayCreationNoDimension() { List<Statement> stmts = translateStatements("long[] foo = { 123*456, 456789 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSLongArray *foo = [IOSLongArray arrayWithLongs:(jlong[]){ 123 * 456, 456789 } count:2];", result); } public void testShortArrayCreationNoDimension() { List<Statement> stmts = translateStatements("short[] foo = { 24, 42 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSShortArray *foo = [IOSShortArray arrayWithShorts:(jshort[]){ 24, 42 } count:2];", result); } public void testBooleanArrayCreation() { List<Statement> stmts = translateStatements("boolean[] foo = new boolean[] { true, false };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSBooleanArray *foo = " + "[IOSBooleanArray arrayWithBooleans:(jboolean[]){ true, false } count:2];", result); } public void testByteArrayCreation() { List<Statement> stmts = translateStatements("byte[] foo = new byte[] { 1, -2 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSByteArray *foo = [IOSByteArray arrayWithBytes:(jbyte[]){ 1, -2 } count:2];", result); } public void testCharArrayCreation() { List<Statement> stmts = translateStatements("char[] foo = new char[] { 'A', 'z' };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSCharArray *foo = [IOSCharArray arrayWithChars:(jchar[]){ 'A', 'z' } count:2];", result); } public void testDoubleArrayCreation() { List<Statement> stmts = translateStatements("double[] foo = new double[] { 123.45, 3.1416 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSDoubleArray *foo = " + "[IOSDoubleArray arrayWithDoubles:(jdouble[]){ 123.45, 3.1416 } count:2];", result); } public void testFloatArrayCreation() { List<Statement> stmts = translateStatements("float[] foo = new float[] { 123.45f, -0.0001f };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals("IOSFloatArray *foo = " + "[IOSFloatArray arrayWithFloats:(jfloat[]){ 123.45f, -0.0001f } count:2];", result); } public void testIntArrayCreation() { List<Statement> stmts = translateStatements("int[] foo = new int[] { -123, 1280000 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSIntArray *foo = [IOSIntArray arrayWithInts:(jint[]){ -123, 1280000 } count:2];", result); } public void testLongArrayCreation() { List<Statement> stmts = translateStatements("long[] foo = new long[] { 123*456, 456789 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSLongArray *foo = [IOSLongArray arrayWithLongs:(jlong[]){ 123 * 456, 456789 } count:2];", result); } public void testShortArrayCreation() { List<Statement> stmts = translateStatements("short[] foo = new short[] { 24, 42 };"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSShortArray *foo = [IOSShortArray arrayWithShorts:(jshort[]){ 24, 42 } count:2];", result); } public void testMultiDimArrayCreateWithSizes() { List<Statement> stmts = translateStatements("int foo[][][] = new int[2][3][4];"); assertEquals(1, stmts.size()); String result = generateStatement(stmts.get(0)); assertEquals( "IOSObjectArray *foo = [IOSIntArray arrayWithDimensions:3 lengths:(jint[]){ 2, 3, 4 }];", result); } }