2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.yangtools.yang.data.impl.codecs;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13 import static org.junit.Assert.fail;
14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.when;
17 import java.util.List;
19 import org.opendaylight.yangtools.concepts.Codec;
20 import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
21 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
22 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
23 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
24 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
25 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
26 import org.opendaylight.yangtools.yang.model.util.BitsType;
27 import org.opendaylight.yangtools.yang.model.util.EnumerationType;
28 import org.opendaylight.yangtools.yang.model.util.UnionType;
30 import com.google.common.base.Optional;
31 import com.google.common.collect.Lists;
33 public class TypeDefinitionAwareCodecTestHelper {
35 @SuppressWarnings("unchecked")
36 public static <T> T getCodec( TypeDefinition<?> def, Class<T> clazz ) {
37 Object codec = TypeDefinitionAwareCodec.from( def );
38 assertNotNull( codec );
39 assertTrue( clazz.isAssignableFrom( codec.getClass() ) );
43 public static void deserializeWithExpectedIllegalArgEx( Codec<String,?> codec, String param ) {
45 codec.deserialize( param );
46 fail( "Expected IllegalArgumentException" );
47 } catch (IllegalArgumentException e) {
52 public static EnumTypeDefinition toEnumTypeDefinition( String... enums ) {
53 List<EnumTypeDefinition.EnumPair> enumList = Lists.newArrayList();
54 for( String en: enums ) {
55 EnumTypeDefinition.EnumPair mockEnum = mock( EnumTypeDefinition.EnumPair.class );
56 when( mockEnum.getName() ).thenReturn( en );
57 enumList.add( mockEnum );
60 return EnumerationType.create( mock( SchemaPath.class ), enumList,
64 public static UnionTypeDefinition toUnionTypeDefinition( TypeDefinition<?>... types ) {
65 return UnionType.create( Lists.newArrayList( types ) );
68 public static BitsTypeDefinition toBitsTypeDefinition( String... bits ) {
69 List<BitsTypeDefinition.Bit> bitList = Lists.newArrayList();
70 for( String bit: bits ) {
71 BitsTypeDefinition.Bit mockBit = mock( BitsTypeDefinition.Bit.class );
72 when( mockBit.getName() ).thenReturn( bit );
73 bitList.add( mockBit );
76 return BitsType.create( mock( SchemaPath.class ), bitList );