Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 467bb282 authored by Yifan Hong's avatar Yifan Hong
Browse files

Updated tests for constant expressions.

Test: `make android.hardware.tests.expression@1.0` compiles
      and generates enum class Color with autofilled values.
Test: `make hidl_test_java` succeeded.
Test: `make hidl_test` succeeded.

Bug: 31628863 Add test for autofilling enum values.
Bug: 31592132 allow constant expressions be array sizes.

Change-Id: I79f35365f1d37843922725ad5a405848f3e8ec08
parent 495391aa
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -25,6 +25,25 @@ $(GEN): $(LOCAL_PATH)/IExpression.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build IExpressionExt.hal
#
GEN := $(intermediates)/android/hardware/tests/expression/1.0/ExpressionExtAll.cpp
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExpressionExt.hal
$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IExpression.hal
$(GEN): $(LOCAL_PATH)/IExpression.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
    $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
    -Lc++ -randroid.hardware:hardware/interfaces \
    android.hardware.tests.expression@1.0::IExpressionExt

$(GEN): $(LOCAL_PATH)/IExpressionExt.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
LOCAL_SHARED_LIBRARIES := \
  libhidl \
@@ -61,6 +80,25 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
$(GEN): $(LOCAL_PATH)/IExpression.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build IExpressionExt.hal
#
GEN := $(intermediates)/android/hardware/tests/expression/1.0/IExpressionExt.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IExpressionExt.hal
$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IExpression.hal
$(GEN): $(LOCAL_PATH)/IExpression.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
    $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
    -Ljava -randroid.hardware:hardware/interfaces \
    android.hardware.tests.expression@1.0::IExpressionExt

$(GEN): $(LOCAL_PATH)/IExpressionExt.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
include $(BUILD_JAVA_LIBRARY)


+50 −0
Original line number Diff line number Diff line
@@ -144,4 +144,54 @@ interface IExpression {
    logand4 = (0 && 1) == 0,
  };

  enum Grayscale : int8_t {
    WHITE = 126,
    GRAY, // 127
    DARK_GRAY, // -128
    BLACK // -127
  };

  enum Color : Grayscale {
    RED, // -126
    RUBY = 0,
    GREEN, // 1
    BLUE = 5,
    CYAN, // 6
    ORANGE, // 7
    ROSE = WHITE,
  };

  enum Foo1 : int8_t {};
  enum Foo2 : Foo1 {};
  enum Foo3 : Foo2 {
    BAR1, // 0
    BAR2 = 10,
  };
  enum Foo4 : Foo3 {
    BAR3, // 11
    BAR4 = BAR2 + BAR3 // 21
  };

  enum Number : uint8_t {
    MAX = 255,
    MAX_PLUS_1, // 0
    MAX_PLUS_2 // 1
  };

  enum Constants {
    CONST_FOO,
    CONST_BAR = 70,
    MAX_ARRAY_SIZE = 20,
    MAX_ARRAY_SIZE2,
    MAX_ARRAY_SIZE3 = MAX_ARRAY_SIZE + MAX_ARRAY_SIZE,
    MY_INT32_MAX_MINUS_1 = 0x7FFFFFFE,
    MY_INT32_MAX, // 0x7FFFFFFF
    MY_INT32_MIN, // 0x80000000
    MY_INT32_MIN_PLUS_1, // 0x80000001
  };

  @callflow(key=Constants:CONST_FOO + 1)
  foo1(int32_t[Constants:CONST_FOO + 1] array);
  foo2(int32_t[5 + 8] array);
  foo3(int32_t[Constants:MAX_ARRAY_SIZE] array);
};
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * 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 android.hardware.tests.expression@1.0;

import IExpression;

interface IExpressionExt {

    enum NewEnum : int32_t {
        ENUM_GOOD = Constants:CONST_BAR,
        ENUM_BETTER = IExpression.Constants:CONST_BAR,
        ENUM_BEST = android.hardware.tests.expression@1.0::IExpression.Constants:CONST_BAR,
    };

    typedef Color[((Constants:MAX_ARRAY_SIZE << 1) - (Constants:CONST_FOO + 1)*8) >> 1] SixteenColors;
    struct ArrayOfColors {
        Color[(Constants:MAX_ARRAY_SIZE << 1) - (Constants:CONST_FOO + 1)*8] my32Colors; // 32
    };
    struct AnotherArrayOfColors {
        SixteenColors my16Colors;
    };

    foo3(int32_t[IExpression.Constants:MAX_ARRAY_SIZE] array);
    foo2(SixteenColors array);
    foo1(int32_t[Constants:CONST_FOO + 5] array);
};