• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
<lambda>null2   * Copyright (C) 2024 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 platform.test.motion.golden
18  
19  import androidx.test.ext.junit.runners.AndroidJUnit4
20  import com.google.common.truth.Truth.assertThat
21  import org.json.JSONObject
22  import org.junit.Test
23  import org.junit.runner.RunWith
24  import platform.test.motion.golden.DataPoint.Companion.notFound
25  import platform.test.motion.golden.DataPoint.Companion.nullValue
26  
27  @RunWith(AndroidJUnit4::class)
28  class DataPointTypeTest {
29      data class Native(val id: String)
30  
31      private val subject =
32          DataPointType(
33              "native",
34              jsonToValue = { jsonValue ->
35                  jsonToValueInvocations++
36                  if (jsonValue is String) Native(jsonValue) else throw UnknownTypeException()
37              },
38              valueToJson = {
39                  valueToJsonInvocations++
40                  it.id
41              }
42          )
43      private var jsonToValueInvocations = 0
44      private var valueToJsonInvocations = 0
45  
46      @Test
47      fun makeDataPoint_ofNull_createsNullValue() {
48          assertThat(subject.makeDataPoint(null)).isEqualTo(nullValue<Native>())
49      }
50  
51      @Test
52      fun makeDataPoint_ofInstance_createsValueDataPoint() {
53          val nativeValue = Native("one")
54          val dataPoint = subject.makeDataPoint(nativeValue)
55  
56          assertThat(dataPoint).isInstanceOf(ValueDataPoint::class.java)
57          val valueDataPoint = dataPoint as ValueDataPoint
58          assertThat(valueDataPoint.value).isSameInstanceAs(nativeValue)
59          assertThat(valueDataPoint.type).isSameInstanceAs(subject)
60      }
61  
62      @Test
63      fun fromJson_ofNull_returnsNullValue() {
64          val dataPoint = subject.fromJson(JSONObject.NULL)
65  
66          assertThat(dataPoint).isEqualTo(nullValue<Native>())
67          assertThat(jsonToValueInvocations).isEqualTo(0)
68      }
69  
70      @Test
71      fun fromJson_ofNotFound_returnsNotFound() {
72          val dataPoint = subject.fromJson(NotFoundDataPoint.instance.asJson())
73  
74          assertThat(dataPoint).isEqualTo(notFound<Native>())
75          assertThat(jsonToValueInvocations).isEqualTo(0)
76      }
77  
78      @Test
79      fun fromJson_ofValue_returnsValueDataPoint() {
80          val dataPoint = subject.fromJson("one")
81  
82          assertThat(dataPoint).isInstanceOf(ValueDataPoint::class.java)
83          val valueDataPoint = dataPoint as ValueDataPoint
84          assertThat(valueDataPoint.value).isEqualTo(Native("one"))
85          assertThat(valueDataPoint.type).isSameInstanceAs(subject)
86          assertThat(jsonToValueInvocations).isEqualTo(1)
87      }
88  
89      @Test
90      fun toJson_delegatesToConverter() {
91          val json = subject.toJson(Native("one"))
92  
93          assertThat(json).isEqualTo("one")
94          assertThat(valueToJsonInvocations).isEqualTo(1)
95      }
96  }
97