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