예제 #1
0
        public void TestDeleteContainedEntities()
        {
            // Initialize entities
            TestStructTypeSupport support = new TestStructTypeSupport();
            string     typeName           = support.GetTypeName();
            ReturnCode result             = support.RegisterType(_participant, typeName);

            Assert.AreEqual(ReturnCode.Ok, result);

            Topic topic = _participant.CreateTopic(nameof(TestDeleteContainedEntities), typeName);

            Assert.IsNotNull(topic);
            Assert.IsNull(topic.GetListener());
            Assert.AreEqual(nameof(TestDeleteContainedEntities), topic.Name);
            Assert.AreEqual(typeName, topic.TypeName);

            Subscriber subscriber = _participant.CreateSubscriber();

            Assert.IsNotNull(subscriber);

            // Call DeleteContainedEntities in an empty subscriber
            result = subscriber.DeleteContainedEntities();
            Assert.AreEqual(ReturnCode.Ok, result);

            // Create a DataReader in the subscriber
            DataReader dataReader = subscriber.CreateDataReader(topic);

            Assert.IsNotNull(subscriber);

            // Try to delete the publisher without delete the datareader
            result = _participant.DeleteSubscriber(subscriber);
            Assert.AreEqual(ReturnCode.PreconditionNotMet, result);

            // Call DeleteContainedEntities and remove the subscriber again
            result = subscriber.DeleteContainedEntities();
            Assert.AreEqual(ReturnCode.Ok, result);

            result = _participant.DeleteSubscriber(subscriber);
            Assert.AreEqual(ReturnCode.Ok, result);

            // Create a DataReader with null parameter
            DataReader nullDataReader = subscriber.CreateDataReader(null);

            Assert.IsNull(nullDataReader);

            // Create DataReader with incorrect qos
            DataReaderQos drQos = new DataReaderQos();

            drQos.ResourceLimits.MaxSamples            = 1;
            drQos.ResourceLimits.MaxSamplesPerInstance = 2;
            nullDataReader = subscriber.CreateDataReader(topic, drQos);
            Assert.IsNull(nullDataReader);
        }