Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2011-2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.renderscript.cts;
     18 
     19 import android.renderscript.Element;
     20 import android.renderscript.Element.DataType;
     21 import android.renderscript.Element.DataKind;
     22 import android.renderscript.RSIllegalArgumentException;
     23 
     24 public class ElementTest extends RSBaseCompute {
     25 
     26     public void testCreatePixel() {
     27         assertTrue(Element.createPixel(mRS,
     28                                        DataType.UNSIGNED_8,
     29                                        DataKind.PIXEL_A) != null);
     30         assertTrue(Element.createPixel(mRS,
     31                                        DataType.UNSIGNED_5_6_5,
     32                                        DataKind.PIXEL_RGB) != null);
     33         assertTrue(Element.createPixel(mRS,
     34                                        DataType.UNSIGNED_8,
     35                                        DataKind.PIXEL_RGB) != null);
     36         assertTrue(Element.createPixel(mRS,
     37                                        DataType.UNSIGNED_5_5_5_1,
     38                                        DataKind.PIXEL_RGBA) != null);
     39         assertTrue(Element.createPixel(mRS,
     40                                        DataType.UNSIGNED_4_4_4_4,
     41                                        DataKind.PIXEL_RGBA) != null);
     42         assertTrue(Element.createPixel(mRS,
     43                                        DataType.UNSIGNED_8,
     44                                        DataKind.PIXEL_RGBA) != null);
     45     }
     46 
     47     public void testCreateVector() {
     48 
     49         Element e = null;
     50         for (int len = 2; len <= 4; len ++) {
     51             assertTrue(Element.createVector(mRS, DataType.FLOAT_32, len) != null);
     52             assertTrue(Element.createVector(mRS, DataType.FLOAT_64, len) != null);
     53             assertTrue(Element.createVector(mRS, DataType.SIGNED_8, len) != null);
     54             assertTrue(Element.createVector(mRS, DataType.SIGNED_16, len) != null);
     55             assertTrue(Element.createVector(mRS, DataType.SIGNED_32, len) != null);
     56             assertTrue(Element.createVector(mRS, DataType.SIGNED_64, len) != null);
     57             assertTrue(Element.createVector(mRS, DataType.UNSIGNED_8, len) != null);
     58             assertTrue(Element.createVector(mRS, DataType.UNSIGNED_16, len) != null);
     59             assertTrue(Element.createVector(mRS, DataType.UNSIGNED_32, len) != null);
     60             assertTrue(Element.createVector(mRS, DataType.UNSIGNED_64, len) != null);
     61         }
     62     }
     63 
     64     public void testPrebuiltElements() {
     65         assertTrue(Element.A_8(mRS) != null);
     66         assertTrue(Element.RGBA_4444(mRS) != null);
     67         assertTrue(Element.RGBA_5551(mRS) != null);
     68         assertTrue(Element.RGB_565(mRS) != null);
     69         assertTrue(Element.RGB_888(mRS) != null);
     70         assertTrue(Element.RGBA_8888(mRS) != null);
     71         assertTrue(Element.F32(mRS) != null);
     72         assertTrue(Element.F32_2(mRS) != null);
     73         assertTrue(Element.F32_3(mRS) != null);
     74         assertTrue(Element.F32_4(mRS) != null);
     75         assertTrue(Element.F64(mRS) != null);
     76         assertTrue(Element.F64_2(mRS) != null);
     77         assertTrue(Element.F64_3(mRS) != null);
     78         assertTrue(Element.F64_4(mRS) != null);
     79         assertTrue(Element.I8(mRS) != null);
     80         assertTrue(Element.I8_2(mRS) != null);
     81         assertTrue(Element.I8_3(mRS) != null);
     82         assertTrue(Element.I8_4(mRS) != null);
     83         assertTrue(Element.I16(mRS) != null);
     84         assertTrue(Element.I16_2(mRS) != null);
     85         assertTrue(Element.I16_3(mRS) != null);
     86         assertTrue(Element.I16_4(mRS) != null);
     87         assertTrue(Element.I32(mRS) != null);
     88         assertTrue(Element.I32_2(mRS) != null);
     89         assertTrue(Element.I32_3(mRS) != null);
     90         assertTrue(Element.I32_4(mRS) != null);
     91         assertTrue(Element.I64(mRS) != null);
     92         assertTrue(Element.I64_2(mRS) != null);
     93         assertTrue(Element.I64_3(mRS) != null);
     94         assertTrue(Element.I64_4(mRS) != null);
     95         assertTrue(Element.U8(mRS) != null);
     96         assertTrue(Element.U8_2(mRS) != null);
     97         assertTrue(Element.U8_3(mRS) != null);
     98         assertTrue(Element.U8_4(mRS) != null);
     99         assertTrue(Element.U16(mRS) != null);
    100         assertTrue(Element.U16_2(mRS) != null);
    101         assertTrue(Element.U16_3(mRS) != null);
    102         assertTrue(Element.U16_4(mRS) != null);
    103         assertTrue(Element.U32(mRS) != null);
    104         assertTrue(Element.U32_2(mRS) != null);
    105         assertTrue(Element.U32_3(mRS) != null);
    106         assertTrue(Element.U32_4(mRS) != null);
    107         assertTrue(Element.U64(mRS) != null);
    108         assertTrue(Element.U64_2(mRS) != null);
    109         assertTrue(Element.U64_3(mRS) != null);
    110         assertTrue(Element.U64_4(mRS) != null);
    111         assertTrue(Element.MATRIX_2X2(mRS) != null);
    112         assertTrue(Element.MATRIX_3X3(mRS) != null);
    113         assertTrue(Element.MATRIX_4X4(mRS) != null);
    114         assertTrue(Element.MATRIX4X4(mRS) != null);
    115         assertTrue(Element.MESH(mRS) != null);
    116         assertTrue(Element.PROGRAM_FRAGMENT(mRS) != null);
    117         assertTrue(Element.PROGRAM_RASTER(mRS) != null);
    118         assertTrue(Element.PROGRAM_STORE(mRS) != null);
    119         assertTrue(Element.PROGRAM_VERTEX(mRS) != null);
    120         assertTrue(Element.ALLOCATION(mRS) != null);
    121         assertTrue(Element.SAMPLER(mRS) != null);
    122         assertTrue(Element.SCRIPT(mRS) != null);
    123         assertTrue(Element.TYPE(mRS) != null);
    124         assertTrue(Element.BOOLEAN(mRS) != null);
    125         assertTrue(Element.ELEMENT(mRS) != null);
    126     }
    127 
    128     public void testEquals() {
    129         assertTrue(Element.A_8(mRS).equals(Element.A_8(mRS)));
    130         assertFalse(Element.A_8(mRS).equals(Element.U8(mRS)));
    131 
    132         // Compatible elements
    133         assertTrue(Element.A_8(mRS).isCompatible(Element.U8(mRS)));
    134         assertTrue(Element.U8(mRS).isCompatible(Element.A_8(mRS)));
    135 
    136         // Verify equivalence of user-built Elements
    137         Element.Builder eb1 = new Element.Builder(mRS);
    138         eb1.add(Element.I8(mRS), "Test");
    139         Element e1 = eb1.add(Element.U8(mRS), "UTest").create();
    140 
    141         assertTrue(e1.equals(e1));
    142 
    143         Element.Builder eb2 = new Element.Builder(mRS);
    144         eb2.add(Element.I8(mRS), "Test");
    145         Element e2 = eb2.add(Element.U8(mRS), "UTest").create();
    146 
    147         assertTrue(e1.equals(e2));
    148         assertTrue(e2.equals(e1));
    149         assertTrue(e1.hashCode() == e2.hashCode());
    150         assertTrue(e1.isCompatible(e2));
    151         assertTrue(e2.isCompatible(e1));
    152 
    153         // Check name differences
    154         Element.Builder eb3 = new Element.Builder(mRS);
    155         eb3.add(Element.I8(mRS), "Test");
    156         Element e3 = eb3.add(Element.U8(mRS), "NotUTest").create();
    157 
    158         assertFalse(e1.equals(e3));
    159         assertFalse(e3.equals(e1));
    160         assertFalse(e1.isCompatible(e3));
    161         assertFalse(e3.isCompatible(e1));
    162 
    163         eb1.add(Element.I8(mRS), "Another");
    164         assertFalse(e1.equals(eb1.create()));
    165         assertFalse(eb1.create().equals(e1));
    166 
    167         // Compatible sub-elements but neither equal nor compatible
    168         Element.Builder eb4 = new Element.Builder(mRS);
    169         eb4.add(Element.I8(mRS), "Test");
    170         Element e4 = eb4.add(Element.A_8(mRS), "UTest").create();
    171 
    172         assertFalse(e1.equals(e4));
    173         assertFalse(e4.equals(e1));
    174         assertFalse(e1.isCompatible(e4));
    175         assertFalse(e4.isCompatible(e1));
    176 
    177         // Check identity from same builder
    178         assertTrue(eb1.create().isCompatible(eb1.create()));
    179     }
    180 
    181     public void testIsCompatible() {
    182         Element[] ALLOCATION = { Element.ALLOCATION(mRS) };
    183         // A_8 is in U8
    184         Element[] BOOLEAN = { Element.BOOLEAN(mRS) };
    185         Element[] ELEMENT = { Element.ELEMENT(mRS) };
    186         Element[] F16 = { Element.F16(mRS) };
    187         Element[] F16_2 = { Element.F16_2(mRS),
    188             Element.createVector(mRS, Element.DataType.FLOAT_16, 2) };
    189         Element[] F16_3 = { Element.F16_3(mRS),
    190             Element.createVector(mRS, Element.DataType.FLOAT_16, 3) };
    191         Element[] F16_4 = { Element.F16_4(mRS),
    192             Element.createVector(mRS, Element.DataType.FLOAT_16, 4) };
    193         Element[] F32 = { Element.F32(mRS) };
    194         Element[] F32_2 = { Element.F32_2(mRS),
    195             Element.createVector(mRS, Element.DataType.FLOAT_32, 2) };
    196         Element[] F32_3 = { Element.F32_3(mRS),
    197             Element.createVector(mRS, Element.DataType.FLOAT_32, 3) };
    198         Element[] F32_4 = { Element.F32_4(mRS),
    199             Element.createVector(mRS, Element.DataType.FLOAT_32, 4) };
    200         Element[] F64 = { Element.F64(mRS) };
    201         Element[] I16 = { Element.I16(mRS) };
    202         Element[] I32 = { Element.I32(mRS) };
    203         Element[] I64 = { Element.I64(mRS) };
    204         Element[] I8 = { Element.I8(mRS) };
    205         // MATRIX4X4 is in MATRIX_4X4
    206         Element[] MATRIX_2X2 = { Element.MATRIX_2X2(mRS) };
    207         Element[] MATRIX_3X3 = { Element.MATRIX_3X3(mRS) };
    208         Element[] MATRIX_4X4 = { Element.MATRIX4X4(mRS),
    209                                  Element.MATRIX_4X4(mRS) };
    210         Element[] MESH = { Element.MESH(mRS) };
    211         Element[] PROGRAM_FRAGMENT = { Element.PROGRAM_FRAGMENT(mRS) };
    212         Element[] PROGRAM_RASTER = { Element.PROGRAM_RASTER(mRS) };
    213         Element[] PROGRAM_STORE = { Element.PROGRAM_STORE(mRS) };
    214         Element[] PROGRAM_VERTEX = { Element.PROGRAM_VERTEX(mRS) };
    215         Element[] RGBA_4444 = { Element.RGBA_4444(mRS),
    216             Element.createPixel(mRS, Element.DataType.UNSIGNED_4_4_4_4,
    217                                 Element.DataKind.PIXEL_RGBA) };
    218         Element[] RGBA_5551 = { Element.RGBA_5551(mRS),
    219             Element.createPixel(mRS, Element.DataType.UNSIGNED_5_5_5_1,
    220                                 Element.DataKind.PIXEL_RGBA) };
    221         // RGBA_8888 is in U8_4
    222         Element[] RGB_565 = { Element.RGB_565(mRS),
    223             Element.createPixel(mRS, Element.DataType.UNSIGNED_5_6_5,
    224                                 Element.DataKind.PIXEL_RGB) };
    225         // RGB_888 is in U8_3
    226         Element[] SAMPLER = { Element.SAMPLER(mRS) };
    227         Element[] SCRIPT = { Element.SCRIPT(mRS) };
    228         Element[] TYPE = { Element.TYPE(mRS) };
    229         Element[] U16 = { Element.U16(mRS) };
    230         Element[] U32 = { Element.U32(mRS) };
    231         Element[] U64 = { Element.U64(mRS) };
    232         Element[] U8 = { Element.A_8(mRS),
    233                          Element.U8(mRS),
    234             Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
    235                                 Element.DataKind.PIXEL_A) };
    236         Element[] U8_3 = { Element.RGB_888(mRS),
    237             Element.createVector(mRS, Element.DataType.UNSIGNED_8, 3),
    238             Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
    239                                 Element.DataKind.PIXEL_RGB) };
    240         Element[] U8_4 = { Element.U8_4(mRS),
    241                            Element.RGBA_8888(mRS),
    242             Element.createVector(mRS, Element.DataType.UNSIGNED_8, 4),
    243             Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
    244                                 Element.DataKind.PIXEL_RGBA) };
    245 
    246         Element[][] ElementArrs = { ALLOCATION, BOOLEAN, ELEMENT,
    247                                     F16, F16_2, F16_3, F16_4,
    248                                     F32, F32_2, F32_3, F32_4,
    249                                     F64, I16, I32, I64, I8,
    250                                     MATRIX_2X2, MATRIX_3X3, MATRIX_4X4, MESH,
    251                                     PROGRAM_FRAGMENT, PROGRAM_RASTER,
    252                                     PROGRAM_STORE, PROGRAM_VERTEX, RGBA_4444,
    253                                     RGBA_5551, RGB_565, SAMPLER, SCRIPT, TYPE,
    254                                     U16, U32, U64, U8, U8_3, U8_4 };
    255 
    256         int ElementArrsLen = ElementArrs.length;
    257         for (int i = 0; i < ElementArrsLen; i++) {
    258             for (int j = 0; j < ElementArrsLen; j++) {
    259                 for (Element el : ElementArrs[i]) {
    260                     for (Element er : ElementArrs[j]) {
    261                         if (i == j) {
    262                             // Elements within a group are compatible
    263                             assertTrue(el.isCompatible(er));
    264                         } else {
    265                             // Elements from different groups are incompatible
    266                             assertFalse(el.isCompatible(er));
    267                         }
    268                     }
    269                 }
    270             }
    271         }
    272     }
    273 
    274     public void testElementBuilder() {
    275         for (int arraySize = 1; arraySize <= 3; arraySize++) {
    276             // Now test array size
    277             Element.Builder eb = new Element.Builder(mRS);
    278             eb.add(Element.A_8(mRS), "A_8", arraySize);
    279             eb.add(Element.RGBA_4444(mRS), "RGBA_4444", arraySize);
    280             eb.add(Element.RGBA_5551(mRS), "RGBA_5551", arraySize);
    281             eb.add(Element.RGB_565(mRS), "RGB_565", arraySize);
    282             eb.add(Element.RGB_888(mRS), "RGB_888", arraySize);
    283             eb.add(Element.RGBA_8888(mRS), "RGBA_8888", arraySize);
    284             eb.add(Element.F16(mRS), "F16", arraySize);
    285             eb.add(Element.F16_2(mRS), "F16_2", arraySize);
    286             eb.add(Element.F16_3(mRS), "F16_3", arraySize);
    287             eb.add(Element.F16_4(mRS), "F16_4", arraySize);
    288             eb.add(Element.F32(mRS), "F32", arraySize);
    289             eb.add(Element.F32_2(mRS), "F32_2", arraySize);
    290             eb.add(Element.F32_3(mRS), "F32_3", arraySize);
    291             eb.add(Element.F32_4(mRS), "F32_4", arraySize);
    292             eb.add(Element.F64(mRS), "F64", arraySize);
    293             eb.add(Element.F64_2(mRS), "F64_2", arraySize);
    294             eb.add(Element.F64_3(mRS), "F64_3", arraySize);
    295             eb.add(Element.F64_4(mRS), "F64_4", arraySize);
    296             eb.add(Element.I8(mRS), "I8", arraySize);
    297             eb.add(Element.I8_2(mRS), "I8_2", arraySize);
    298             eb.add(Element.I8_3(mRS), "I8_3", arraySize);
    299             eb.add(Element.I8_4(mRS), "I8_4", arraySize);
    300             eb.add(Element.I16(mRS), "I16", arraySize);
    301             eb.add(Element.I16_2(mRS), "I16_2", arraySize);
    302             eb.add(Element.I16_3(mRS), "I16_3", arraySize);
    303             eb.add(Element.I16_4(mRS), "I16_4", arraySize);
    304             eb.add(Element.I32(mRS), "I32", arraySize);
    305             eb.add(Element.I32_2(mRS), "I32_2", arraySize);
    306             eb.add(Element.I32_3(mRS), "I32_3", arraySize);
    307             eb.add(Element.I32_4(mRS), "I32_4", arraySize);
    308             eb.add(Element.I64(mRS), "I64", arraySize);
    309             eb.add(Element.I64_2(mRS), "I64_2", arraySize);
    310             eb.add(Element.I64_3(mRS), "I64_3", arraySize);
    311             eb.add(Element.I64_4(mRS), "I64_4", arraySize);
    312             eb.add(Element.U8(mRS), "U8", arraySize);
    313             eb.add(Element.U8_2(mRS), "U8_2", arraySize);
    314             eb.add(Element.U8_3(mRS), "U8_3", arraySize);
    315             eb.add(Element.U8_4(mRS), "U8_4", arraySize);
    316             eb.add(Element.U16(mRS), "U16", arraySize);
    317             eb.add(Element.U16_2(mRS), "U16_2", arraySize);
    318             eb.add(Element.U16_3(mRS), "U16_3", arraySize);
    319             eb.add(Element.U16_4(mRS), "U16_4", arraySize);
    320             eb.add(Element.U32(mRS), "U32", arraySize);
    321             eb.add(Element.U32_2(mRS), "U32_2", arraySize);
    322             eb.add(Element.U32_3(mRS), "U32_3", arraySize);
    323             eb.add(Element.U32_4(mRS), "U32_4", arraySize);
    324             eb.add(Element.U64(mRS), "U64", arraySize);
    325             eb.add(Element.U64_2(mRS), "U64_2", arraySize);
    326             eb.add(Element.U64_3(mRS), "U64_3", arraySize);
    327             eb.add(Element.U64_4(mRS), "U64_4", arraySize);
    328             eb.add(Element.MATRIX_2X2(mRS), "MATRIX_2X2", arraySize);
    329             eb.add(Element.MATRIX_3X3(mRS), "MATRIX_3X3", arraySize);
    330             eb.add(Element.MATRIX_4X4(mRS), "MATRIX_4X4", arraySize);
    331             eb.add(Element.MATRIX4X4(mRS), "MATRIX4X4", arraySize);
    332             eb.add(Element.MESH(mRS), "MESH", arraySize);
    333             eb.add(Element.PROGRAM_FRAGMENT(mRS), "PROGRAM_FRAGMENT", arraySize);
    334             eb.add(Element.PROGRAM_RASTER(mRS), "PROGRAM_RASTER", arraySize);
    335             eb.add(Element.PROGRAM_STORE(mRS), "PROGRAM_STORE", arraySize);
    336             eb.add(Element.PROGRAM_VERTEX(mRS), "PROGRAM_VERTEX", arraySize);
    337             eb.add(Element.ALLOCATION(mRS), "ALLOCATION", arraySize);
    338             eb.add(Element.SAMPLER(mRS), "SAMPLER", arraySize);
    339             eb.add(Element.SCRIPT(mRS), "SCRIPT", arraySize);
    340             eb.add(Element.TYPE(mRS), "TYPE", arraySize);
    341             eb.add(Element.BOOLEAN(mRS), "BOOLEAN", arraySize);
    342             eb.add(Element.ELEMENT(mRS), "ELEMENT", arraySize);
    343             assertTrue(eb.create() != null);
    344         }
    345     }
    346 
    347     public void testIsComplex() {
    348         assertFalse(Element.A_8(mRS).isComplex());
    349         assertFalse(Element.RGBA_4444(mRS).isComplex());
    350         assertFalse(Element.RGBA_5551(mRS).isComplex());
    351         assertFalse(Element.RGB_565(mRS).isComplex());
    352         assertFalse(Element.RGB_888(mRS).isComplex());
    353         assertFalse(Element.RGBA_8888(mRS).isComplex());
    354         assertFalse(Element.F16(mRS).isComplex());
    355         assertFalse(Element.F16_2(mRS).isComplex());
    356         assertFalse(Element.F16_3(mRS).isComplex());
    357         assertFalse(Element.F16_4(mRS).isComplex());
    358         assertFalse(Element.F32(mRS).isComplex());
    359         assertFalse(Element.F32_2(mRS).isComplex());
    360         assertFalse(Element.F32_3(mRS).isComplex());
    361         assertFalse(Element.F32_4(mRS).isComplex());
    362         assertFalse(Element.F64(mRS).isComplex());
    363         assertFalse(Element.F64_2(mRS).isComplex());
    364         assertFalse(Element.F64_3(mRS).isComplex());
    365         assertFalse(Element.F64_4(mRS).isComplex());
    366         assertFalse(Element.I8(mRS).isComplex());
    367         assertFalse(Element.I8_2(mRS).isComplex());
    368         assertFalse(Element.I8_3(mRS).isComplex());
    369         assertFalse(Element.I8_4(mRS).isComplex());
    370         assertFalse(Element.I16(mRS).isComplex());
    371         assertFalse(Element.I16_2(mRS).isComplex());
    372         assertFalse(Element.I16_3(mRS).isComplex());
    373         assertFalse(Element.I16_4(mRS).isComplex());
    374         assertFalse(Element.I32(mRS).isComplex());
    375         assertFalse(Element.I32_2(mRS).isComplex());
    376         assertFalse(Element.I32_3(mRS).isComplex());
    377         assertFalse(Element.I32_4(mRS).isComplex());
    378         assertFalse(Element.I64(mRS).isComplex());
    379         assertFalse(Element.I64_2(mRS).isComplex());
    380         assertFalse(Element.I64_3(mRS).isComplex());
    381         assertFalse(Element.I64_4(mRS).isComplex());
    382         assertFalse(Element.U8(mRS).isComplex());
    383         assertFalse(Element.U8_2(mRS).isComplex());
    384         assertFalse(Element.U8_3(mRS).isComplex());
    385         assertFalse(Element.U8_4(mRS).isComplex());
    386         assertFalse(Element.U16(mRS).isComplex());
    387         assertFalse(Element.U16_2(mRS).isComplex());
    388         assertFalse(Element.U16_3(mRS).isComplex());
    389         assertFalse(Element.U16_4(mRS).isComplex());
    390         assertFalse(Element.U32(mRS).isComplex());
    391         assertFalse(Element.U32_2(mRS).isComplex());
    392         assertFalse(Element.U32_3(mRS).isComplex());
    393         assertFalse(Element.U32_4(mRS).isComplex());
    394         assertFalse(Element.U64(mRS).isComplex());
    395         assertFalse(Element.U64_2(mRS).isComplex());
    396         assertFalse(Element.U64_3(mRS).isComplex());
    397         assertFalse(Element.U64_4(mRS).isComplex());
    398         assertFalse(Element.MATRIX_2X2(mRS).isComplex());
    399         assertFalse(Element.MATRIX_3X3(mRS).isComplex());
    400         assertFalse(Element.MATRIX_4X4(mRS).isComplex());
    401         assertFalse(Element.MATRIX4X4(mRS).isComplex());
    402         assertFalse(Element.MESH(mRS).isComplex());
    403         assertFalse(Element.PROGRAM_FRAGMENT(mRS).isComplex());
    404         assertFalse(Element.PROGRAM_RASTER(mRS).isComplex());
    405         assertFalse(Element.PROGRAM_STORE(mRS).isComplex());
    406         assertFalse(Element.PROGRAM_VERTEX(mRS).isComplex());
    407         assertFalse(Element.ALLOCATION(mRS).isComplex());
    408         assertFalse(Element.SAMPLER(mRS).isComplex());
    409         assertFalse(Element.SCRIPT(mRS).isComplex());
    410         assertFalse(Element.TYPE(mRS).isComplex());
    411         assertFalse(Element.BOOLEAN(mRS).isComplex());
    412         assertFalse(Element.ELEMENT(mRS).isComplex());
    413 
    414         Element.Builder eb = new Element.Builder(mRS);
    415         eb.add(Element.F32(mRS), "FLOAT");
    416         eb.add(Element.SAMPLER(mRS), "SAMPLER");
    417         Element e1 = eb.create();
    418         assertFalse(e1.isComplex());
    419 
    420         eb = new Element.Builder(mRS);
    421         eb.add(Element.A_8(mRS), "A_8");
    422         eb.add(Element.RGBA_4444(mRS), "RGBA_4444");
    423         Element e2 = eb.create();
    424         assertFalse(e2.isComplex());
    425 
    426         eb = new Element.Builder(mRS);
    427         eb.add(e1, "e1");
    428         eb.add(e2, "e2");
    429         assertTrue(eb.create().isComplex());
    430     }
    431 
    432     public void testDataType() {
    433         // Uncomment when NONE is no longer hidden.
    434         //assertEquals(DataType.NONE, DataType.valueOf("NONE"));
    435 
    436         assertEquals(DataType.FLOAT_16, DataType.valueOf("FLOAT_16"));
    437         assertEquals(DataType.FLOAT_32, DataType.valueOf("FLOAT_32"));
    438         assertEquals(DataType.FLOAT_64, DataType.valueOf("FLOAT_64"));
    439         assertEquals(DataType.SIGNED_8, DataType.valueOf("SIGNED_8"));
    440         assertEquals(DataType.SIGNED_16, DataType.valueOf("SIGNED_16"));
    441         assertEquals(DataType.SIGNED_32, DataType.valueOf("SIGNED_32"));
    442         assertEquals(DataType.SIGNED_64, DataType.valueOf("SIGNED_64"));
    443         assertEquals(DataType.UNSIGNED_8, DataType.valueOf("UNSIGNED_8"));
    444         assertEquals(DataType.UNSIGNED_16, DataType.valueOf("UNSIGNED_16"));
    445         assertEquals(DataType.UNSIGNED_32, DataType.valueOf("UNSIGNED_32"));
    446         assertEquals(DataType.UNSIGNED_64, DataType.valueOf("UNSIGNED_64"));
    447 
    448         assertEquals(DataType.BOOLEAN, DataType.valueOf("BOOLEAN"));
    449 
    450         assertEquals(DataType.UNSIGNED_5_6_5, DataType.valueOf("UNSIGNED_5_6_5"));
    451         assertEquals(DataType.UNSIGNED_5_5_5_1, DataType.valueOf("UNSIGNED_5_5_5_1"));
    452         assertEquals(DataType.UNSIGNED_4_4_4_4, DataType.valueOf("UNSIGNED_4_4_4_4"));
    453 
    454         assertEquals(DataType.MATRIX_4X4, DataType.valueOf("MATRIX_4X4"));
    455         assertEquals(DataType.MATRIX_3X3, DataType.valueOf("MATRIX_3X3"));
    456         assertEquals(DataType.MATRIX_2X2, DataType.valueOf("MATRIX_2X2"));
    457 
    458         assertEquals(DataType.RS_ELEMENT, DataType.valueOf("RS_ELEMENT"));
    459         assertEquals(DataType.RS_TYPE, DataType.valueOf("RS_TYPE"));
    460         assertEquals(DataType.RS_ALLOCATION, DataType.valueOf("RS_ALLOCATION"));
    461         assertEquals(DataType.RS_SAMPLER, DataType.valueOf("RS_SAMPLER"));
    462         assertEquals(DataType.RS_SCRIPT, DataType.valueOf("RS_SCRIPT"));
    463         assertEquals(DataType.RS_MESH, DataType.valueOf("RS_MESH"));
    464         assertEquals(DataType.RS_PROGRAM_FRAGMENT, DataType.valueOf("RS_PROGRAM_FRAGMENT"));
    465         assertEquals(DataType.RS_PROGRAM_VERTEX, DataType.valueOf("RS_PROGRAM_VERTEX"));
    466         assertEquals(DataType.RS_PROGRAM_RASTER, DataType.valueOf("RS_PROGRAM_RASTER"));
    467         assertEquals(DataType.RS_PROGRAM_STORE, DataType.valueOf("RS_PROGRAM_STORE"));
    468         // Make sure no new enums are added
    469         assertEquals(30, DataType.values().length);
    470 
    471         for (DataType dt : DataType.values()) {
    472             switch (dt) {
    473             case FLOAT_16:
    474             case FLOAT_32:
    475             case FLOAT_64:
    476             case SIGNED_8:
    477             case SIGNED_16:
    478             case SIGNED_32:
    479             case SIGNED_64:
    480             case UNSIGNED_8:
    481             case UNSIGNED_16:
    482             case UNSIGNED_32:
    483             case UNSIGNED_64:
    484             case BOOLEAN:
    485                 Element.createVector(mRS, dt, 2);
    486                 break;
    487 
    488             default: {
    489                 try {
    490                     Element.createVector(mRS, dt, 2);
    491                     fail("should throw RSIllegalArgumentException");
    492                 } catch (RSIllegalArgumentException e) {
    493                 }
    494                 break;
    495             }
    496             }
    497         }
    498     }
    499 
    500     public void testDataKind() {
    501         assertEquals(DataKind.USER, DataKind.valueOf("USER"));
    502 
    503         assertEquals(DataKind.PIXEL_L, DataKind.valueOf("PIXEL_L"));
    504         assertEquals(DataKind.PIXEL_A, DataKind.valueOf("PIXEL_A"));
    505         assertEquals(DataKind.PIXEL_LA, DataKind.valueOf("PIXEL_LA"));
    506         assertEquals(DataKind.PIXEL_RGB, DataKind.valueOf("PIXEL_RGB"));
    507         assertEquals(DataKind.PIXEL_RGBA, DataKind.valueOf("PIXEL_RGBA"));
    508         assertEquals(DataKind.PIXEL_DEPTH, DataKind.valueOf("PIXEL_DEPTH"));
    509         assertEquals(DataKind.PIXEL_YUV, DataKind.valueOf("PIXEL_YUV"));
    510         // Make sure no new enums are added
    511         assertEquals(8, DataKind.values().length);
    512 
    513         for (DataKind dk : DataKind.values()) {
    514             if (dk != DataKind.USER && dk != DataKind.PIXEL_YUV) {
    515                 Element.createPixel(mRS, DataType.UNSIGNED_8, dk);
    516             }
    517         }
    518     }
    519 }
    520 
    521 
    522