Migrate yang-data-impl to JUnit5
[yangtools.git] / data / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / codec / BitsCodecStringTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.data.impl.codec;
9
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.mockito.Mockito.doReturn;
12 import static org.mockito.Mockito.mock;
13
14 import com.google.common.collect.ImmutableSet;
15 import java.util.Set;
16 import org.junit.jupiter.api.Test;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.common.Uint32;
19 import org.opendaylight.yangtools.yang.data.api.codec.BitsCodec;
20 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
21 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
22 import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes;
23
24 /**
25  * Unit tests for BitsCodecString.
26  *
27  * @author Thomas Pantelis
28  */
29 class BitsCodecStringTest {
30     private  static BitsTypeDefinition toBitsTypeDefinition(final String... bits) {
31         final var b = BaseTypes.bitsTypeBuilder(QName.create("foo", "foo"));
32
33         long pos = 0;
34         for (var bit : bits) {
35             final var mockBit = mock(Bit.class);
36             doReturn(bit).when(mockBit).getName();
37             doReturn(Uint32.valueOf(pos)).when(mockBit).getPosition();
38             b.addBit(mockBit);
39             ++pos;
40         }
41
42         return b.build();
43     }
44
45     @SuppressWarnings("unchecked")
46     @Test
47     void testSerialize() {
48         final var codec = TypeDefinitionAwareCodecTestHelper.getCodec(toBitsTypeDefinition("foo"),
49                 BitsCodec.class);
50
51         final var serialized = ((BitsCodec<String>) codec).serialize(ImmutableSet.of("foo", "bar"));
52         assertEquals("foo bar", serialized);
53
54         assertEquals("", codec.serialize(Set.of()));
55     }
56
57     @SuppressWarnings("unchecked")
58     @Test
59     void testDeserialize() {
60         final var codec = TypeDefinitionAwareCodecTestHelper.getCodec(
61             toBitsTypeDefinition("bit1", "bit2"), BitsCodec.class);
62
63         assertEquals(Set.of("bit1", "bit2"), codec.deserialize("  bit1 bit2     "), "deserialize");
64         assertEquals(Set.of(), codec.deserialize(""), "deserialize");
65
66         TypeDefinitionAwareCodecTestHelper.deserializeWithExpectedIllegalArgEx(codec, "bit1 bit3");
67     }
68 }