| // Copyright 2019 The Bazel Authors. 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.build.android.xml; | |
| import static com.google.common.truth.Truth.assertThat; | |
| import static com.google.devtools.build.android.xml.SimpleXmlResourceValue.convertPrimitiveToString; | |
| import com.android.aapt.Resources.Primitive; | |
| import java.util.Locale; | |
| import org.junit.Test; | |
| import org.junit.runner.RunWith; | |
| import org.junit.runners.JUnit4; | |
| /** Tests for {@link SimpleXmlResourceValue}. */ | |
| @RunWith(JUnit4.class) | |
| public final class SimpleXmlResourceValueTest { | |
| @Test | |
| public void convertPrimitiveToString_float() { | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setFloatValue(1.0f).build())) | |
| .isEqualTo("1.0"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setFloatValue(2.0f).build())) | |
| .isEqualTo("2.0"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_int() { | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setIntDecimalValue(1).build())) | |
| .isEqualTo("1"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setIntDecimalValue(15).build())) | |
| .isEqualTo("15"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setIntHexadecimalValue(1).build())) | |
| .isEqualTo("0x1"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setIntHexadecimalValue(15).build())) | |
| .isEqualTo("0xf"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_boolean() { | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setBooleanValue(false).build())) | |
| .isEqualTo("false"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setBooleanValue(true).build())) | |
| .isEqualTo("true"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_dimension() { | |
| // varying units (bits [3:0]) | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x0).build())) | |
| .isEqualTo("0.0px"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x1).build())) | |
| .isEqualTo("0.0dp"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x2).build())) | |
| .isEqualTo("0.0sp"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x3).build())) | |
| .isEqualTo("0.0pt"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x4).build())) | |
| .isEqualTo("0.0in"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x5).build())) | |
| .isEqualTo("0.0mm"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0xF).build())) | |
| .isEqualTo("0.0 (unknown unit)"); | |
| // varying mantissa (bits [31:8]); negative numbers are stored using two's complement. | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x100).build())) | |
| .isEqualTo("1.0px"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0xFFFFFF00).build())) | |
| .isEqualTo("-1.0px"); | |
| // varying exponent (bits [5:4]) | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x40000000).build())) | |
| .isEqualTo("4194304.0px"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x40000010).build())) | |
| .isEqualTo("32768.0px"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x40000020).build())) | |
| .isEqualTo("128.0px"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x40000030).build())) | |
| .isEqualTo("0.5px"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_dimensionIsNotLocalized() { | |
| Locale.setDefault(Locale.GERMAN); // comma is normally used as decimal point | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setDimensionValue(0x0).build())) | |
| .isEqualTo("0.0px"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_fraction() { | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setFractionValue(0x0).build())) | |
| .isEqualTo("0.0%"); | |
| assertThat(convertPrimitiveToString(Primitive.newBuilder().setFractionValue(0x1).build())) | |
| .isEqualTo("0.0%p"); | |
| } | |
| @Test | |
| public void convertPrimitiveToString_color() { | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setColorRgb8Value(0xffadbeef).build())) | |
| .isEqualTo("#FFADBEEF"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setColorArgb8Value(0xdeadbeef).build())) | |
| .isEqualTo("#DEADBEEF"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setColorRgb4Value(0xffadbeef).build())) | |
| .isEqualTo("#FFADBEEF"); | |
| assertThat( | |
| convertPrimitiveToString(Primitive.newBuilder().setColorArgb4Value(0xdeadbeef).build())) | |
| .isEqualTo("#DEADBEEF"); | |
| } | |
| } |