Fix StringStringCodec length check
[yangtools.git] / yang / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / codec / StringCodecStringTest.java
index f3164eddb9981ea1e5e7147bd1e034f45c1d39d7..87be6d8452a858523c059fb751a189a1bacbd084 100644 (file)
@@ -8,10 +8,19 @@
 package org.opendaylight.yangtools.yang.data.impl.codec;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
 
+import java.util.List;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.codec.StringCodec;
+import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange;
+import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
 import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes;
+import org.opendaylight.yangtools.yang.model.ri.type.InvalidLengthConstraintException;
+import org.opendaylight.yangtools.yang.model.ri.type.RestrictedTypes;
+import org.opendaylight.yangtools.yang.model.ri.type.StringTypeBuilder;
 
 /**
  * Unit tests for StringCodecString.
@@ -19,8 +28,6 @@ import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes;
  * @author Thomas Pantelis
  */
 public class StringCodecStringTest {
-
-    @SuppressWarnings("unchecked")
     @Test
     public void testSerialize() {
         StringCodec<String> codec = TypeDefinitionAwareCodecTestHelper.getCodec(BaseTypes.stringType(),
@@ -30,7 +37,6 @@ public class StringCodecStringTest {
         assertEquals("serialize", "", codec.serialize(""));
     }
 
-    @SuppressWarnings("unchecked")
     @Test
     public void testDeserialize() {
         StringCodec<String> codec = TypeDefinitionAwareCodecTestHelper.getCodec(BaseTypes.stringType(),
@@ -39,4 +45,16 @@ public class StringCodecStringTest {
         assertEquals("deserialize", "bar", codec.deserialize("bar"));
         assertEquals("deserialize", "", codec.deserialize(""));
     }
+
+    @Test
+    public void testDeserializeUnicode() throws InvalidLengthConstraintException {
+        final StringTypeBuilder builder = RestrictedTypes.newStringBuilder(BaseTypes.stringType(),
+            QName.create("foo", "foo"));
+        builder.setLengthConstraint(mock(ConstraintMetaDefinition.class), List.of(ValueRange.of(1)));
+        final StringTypeDefinition type = builder.build();
+
+        StringCodec<String> codec = TypeDefinitionAwareCodecTestHelper.getCodec(type, StringCodec.class);
+
+        assertEquals("🌞", codec.deserialize("🌞"));
+    }
 }