コード例 #1
0
        public void PutGetDeleteIdenticalStructOrNative()
        {
            var testStruct = new MyStruct { IntegerValue = 12, StringValue = "hello" };

            for (var i = 0; i < 10; i++)
            {
                this.QueueStorage.Put(this.QueueName, testStruct);
            }

            var outStruct1 = this.QueueStorage.Get<MyStruct>(this.QueueName, 1).First();
            var outStruct2 = this.QueueStorage.Get<MyStruct>(this.QueueName, 1).First();
            Assert.IsTrue(this.QueueStorage.Delete(outStruct1), "1st Delete failed");
            Assert.IsTrue(this.QueueStorage.Delete(outStruct2), "2nd Delete failed");
            Assert.IsFalse(this.QueueStorage.Delete(outStruct2), "3nd Delete succeeded");

            var outAllStructs = this.QueueStorage.Get<MyStruct>(this.QueueName, 20);
            Assert.AreEqual(8, outAllStructs.Count(), "Wrong queue item count");
            foreach (var str in outAllStructs)
            {
                Assert.AreEqual(testStruct.IntegerValue, str.IntegerValue, "Wrong integer value");
                Assert.AreEqual(testStruct.StringValue, str.StringValue, "Wrong string value");
                Assert.IsTrue(this.QueueStorage.Delete(str), "Delete failed");
            }

            const double TestDouble = 3.6D;

            for (var i = 0; i < 10; i++)
            {
                this.QueueStorage.Put(this.QueueName, TestDouble);
            }

            var outDouble1 = this.QueueStorage.Get<double>(this.QueueName, 1).First();
            var outDouble2 = this.QueueStorage.Get<double>(this.QueueName, 1).First();
            var outDouble3 = this.QueueStorage.Get<double>(this.QueueName, 1).First();
            Assert.IsTrue(this.QueueStorage.Delete(outDouble1), "1st Delete failed");
            Assert.IsTrue(this.QueueStorage.Delete(outDouble2), "2nd Delete failed");
            Assert.IsTrue(this.QueueStorage.Delete(outDouble3), "3nd Delete failed");
            Assert.IsFalse(this.QueueStorage.Delete(outDouble2), "3nd Delete succeeded");

            var outAllDoubles = this.QueueStorage.Get<double>(this.QueueName, 20);
            Assert.AreEqual(7, outAllDoubles.Count(), "Wrong queue item count");
            foreach (var dbl in outAllDoubles)
            {
                Assert.AreEqual(TestDouble, dbl, "Wrong double value");
                Assert.IsTrue(this.QueueStorage.Delete(dbl), "Delete failed");
            }

            const string TestString = "hi there!";

            for (var i = 0; i < 10; i++)
            {
                this.QueueStorage.Put(this.QueueName, TestString);
            }

            var outString1 = this.QueueStorage.Get<string>(this.QueueName, 1).First();
            var outString2 = this.QueueStorage.Get<string>(this.QueueName, 1).First();
            Assert.IsTrue(this.QueueStorage.Delete(outString1), "1st Delete failed");
            Assert.IsTrue(this.QueueStorage.Delete(outString2), "2nd Delete failed");
            Assert.IsFalse(this.QueueStorage.Delete(outString2), "3nd Delete succeeded");

            var outAllStrings = this.QueueStorage.Get<string>(this.QueueName, 20);
            Assert.AreEqual(8, outAllStrings.Count(), "Wrong queue item count");
            foreach (var str in outAllStrings)
            {
                Assert.AreEqual(TestString, str, "Wrong string value");
                Assert.IsTrue(this.QueueStorage.Delete(str), "Delete failed");
            }

            var testClass = new StringBuilder("text");

            for (var i = 0; i < 10; i++)
            {
                this.QueueStorage.Put(this.QueueName, testClass);
            }

            var outClass1 = this.QueueStorage.Get<StringBuilder>(this.QueueName, 1).First();
            var outClass2 = this.QueueStorage.Get<StringBuilder>(this.QueueName, 1).First();
            Assert.IsTrue(this.QueueStorage.Delete(outClass1), "1st Delete failed");
            Assert.IsTrue(this.QueueStorage.Delete(outClass2), "2nd Delete failed");
            Assert.IsFalse(this.QueueStorage.Delete(outClass2), "3nd Delete succeeded");

            var outAllClasses = this.QueueStorage.Get<StringBuilder>(this.QueueName, 20);
            Assert.AreEqual(8, outAllClasses.Count(), "Wrong queue item count");
            foreach (var cls in outAllClasses)
            {
                Assert.AreEqual(testClass.ToString(), cls.ToString(), "Wrong deserialized class value");
                Assert.IsTrue(this.QueueStorage.Delete(cls), "Delete failed");
            }
        }