• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc.  All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 
8 package com.google.protobuf.kotlin
9 
10 import com.google.common.testing.EqualsTester
11 import com.google.common.truth.Truth.assertThat
12 import kotlin.test.assertFailsWith
13 import org.junit.Test
14 import org.junit.runner.RunWith
15 import org.junit.runners.JUnit4
16 
17 /** Tests for [DslList]. */
18 @RunWith(JUnit4::class)
19 @OptIn(OnlyForUseByGeneratedProtoCode::class)
20 class DslListTest {
21   class DummyProxy private constructor() : DslProxy()
22 
23   @Test
matchesListnull24   fun matchesList() {
25     assertThat(DslList<Int, DummyProxy>(listOf(1, 2, 3))).containsExactly(1, 2, 3).inOrder()
26   }
27 
28   @Test
reflectsChangesInListnull29   fun reflectsChangesInList() {
30     val mutableList = mutableListOf(1, 2, 3)
31     val dslList = DslList<Int, DummyProxy>(mutableList)
32     mutableList.add(4)
33     assertThat(dslList).containsExactly(1, 2, 3, 4).inOrder()
34   }
35 
36   @Test
dslListIsNotMutablenull37   fun dslListIsNotMutable() {
38     val dslList = DslList<Int, DummyProxy>(mutableListOf(1, 2, 3))
39     assertThat(dslList is MutableList<*>).isFalse()
40   }
41 
42   @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
43   @Test
dslListIsNotEvenSecretlyMutablenull44   fun dslListIsNotEvenSecretlyMutable() {
45     val dslList = DslList<Int, DummyProxy>(mutableListOf(1, 2, 3))
46     val dslListAsJavaUtil = dslList as java.util.List<Int>
47     assertFailsWith<UnsupportedOperationException> { dslListAsJavaUtil.add(4) }
48   }
49 
50   @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
51   @Test
dslList_IteratorIsNotEvenSecretlyMutablenull52   fun dslList_IteratorIsNotEvenSecretlyMutable() {
53     val dslList = DslList<Int, DummyProxy>(mutableListOf(1, 2, 3))
54     val iterator = dslList.iterator() as java.util.Iterator<Int>
55     iterator.next()
56 
57     assertFailsWith<UnsupportedOperationException> { iterator.remove() }
58   }
59 
60   @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
61   @Test
dslList_ListIteratorIsNotEvenSecretlyMutablenull62   fun dslList_ListIteratorIsNotEvenSecretlyMutable() {
63     val dslList = DslList<Int, DummyProxy>(mutableListOf(1, 2, 3))
64     val iterator = dslList.listIterator() as java.util.ListIterator<Int>
65     iterator.next()
66 
67     assertFailsWith<UnsupportedOperationException> { iterator.remove() }
68   }
69 
70   @Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "UNCHECKED_CAST")
71   @Test
dslList_ListIteratorIndexIsNotEvenSecretlyMutablenull72   fun dslList_ListIteratorIndexIsNotEvenSecretlyMutable() {
73     val dslList = DslList<Int, DummyProxy>(mutableListOf(1, 2, 3))
74     val iterator = dslList.listIterator(1) as java.util.ListIterator<Int>
75     iterator.next()
76 
77     assertFailsWith<UnsupportedOperationException> { iterator.remove() }
78   }
79 
80   @Test
expectedToStringnull81   fun expectedToString() {
82     assertThat(DslList<Int, DummyProxy>(listOf(1, 2)).toString()).isEqualTo("[1, 2]")
83   }
84 
85   @Test
equalitynull86   fun equality() {
87     EqualsTester()
88       .addEqualityGroup(DslList<Int, DummyProxy>(listOf(1, 2)), listOf(1, 2))
89       .addEqualityGroup(DslList<Int, DummyProxy>(listOf(2, 2)), listOf(2, 2))
90       .addEqualityGroup(
91         DslList<Int, DummyProxy>(emptyList()),
92         DslList<String, DummyProxy>(emptyList()),
93         emptyList<Int>(),
94       )
95       .testEquals()
96   }
97 }
98