import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.List;
import org.opendaylight.protocol.pcep.impl.object.PCEPSvecObjectParser;
import org.opendaylight.protocol.pcep.spi.ObjectHeaderImpl;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
+import org.opendaylight.protocol.pcep.spi.PCEPErrors;
import org.opendaylight.protocol.pcep.spi.TlvRegistry;
+import org.opendaylight.protocol.pcep.spi.UnknownObject;
import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(true, false), ByteArray.cutBytes(result, 4)));
assertArrayEquals(result, parser.serializeObject(builder.build()));
}
+
+ @Test
+ public void testIgnoreUknownObject() throws PCEPDeserializerException {
+ final Object object = ctx.getObjectHandlerRegistry().parseObject(35, 1, new ObjectHeaderImpl(false, false), null);
+ assertNull(object);
+ }
+
+ @Test
+ public void testUnrecognizedObjectType() throws PCEPDeserializerException {
+ final Object object = ctx.getObjectHandlerRegistry().parseObject(2, 2, new ObjectHeaderImpl(true, true), null);
+ assertNotNull(object);
+ assertTrue(object instanceof UnknownObject);
+ assertEquals(PCEPErrors.UNRECOGNIZED_OBJ_TYPE, ((UnknownObject) object).getError());
+ }
+
+ @Test
+ public void testUnrecognizedObjectClass() throws PCEPDeserializerException {
+ final Object object = ctx.getObjectHandlerRegistry().parseObject(35, 1, new ObjectHeaderImpl(true, true), null);
+ assertNotNull(object);
+ assertTrue(object instanceof UnknownObject);
+ assertEquals(PCEPErrors.UNRECOGNIZED_OBJ_CLASS, ((UnknownObject) object).getError());
+ }
}
return null;
}
- final boolean foundClass = false;
-
- // FIXME: BUG-187: search the parsers, check classes
-
- if (!foundClass) {
- return new UnknownObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS);
- } else {
- return new UnknownObject(PCEPErrors.UNRECOGNIZED_OBJ_TYPE);
+ for (int type = 1; type <= 15; type++) {
+ final ObjectParser objParser = this.handlers.getParser(createKey(objectClass, type));
+ if(objParser != null) {
+ return new UnknownObject(PCEPErrors.UNRECOGNIZED_OBJ_TYPE);
+ }
}
+ return new UnknownObject(PCEPErrors.UNRECOGNIZED_OBJ_CLASS);
}
return parser.parseObject(header, buffer);
}