/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.yang.data.impl.codecs;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.opendaylight.yangtools.concepts.Codec;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.type.BaseTypes;
import org.opendaylight.yangtools.yang.model.util.type.EnumerationTypeBuilder;
public class TypeDefinitionAwareCodecTestHelper {
@SuppressWarnings("unchecked")
public static <T> T getCodec( final TypeDefinition<?> def, final Class<T> clazz) {
Object codec = TypeDefinitionAwareCodec.from(def);
assertNotNull(codec);
assertTrue(clazz.isAssignableFrom(codec.getClass()));
return (T)codec;
}
public static void deserializeWithExpectedIllegalArgEx(final Codec<String,?> codec, final String param) {
try {
codec.deserialize(param);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
// Expected ...
}
}
public static EnumTypeDefinition toEnumTypeDefinition(final String... enums) {
final EnumerationTypeBuilder b = BaseTypes.enumerationTypeBuilder(mock(SchemaPath.class));
int i = 0;
for (String en : enums) {
EnumTypeDefinition.EnumPair mockEnum = mock(EnumTypeDefinition.EnumPair.class);
when(mockEnum.getName()).thenReturn(en);
when(mockEnum.getValue()).thenReturn(i);
b.addEnum(mockEnum);
i++;
}
return b.build();
}
}