public void RandomTest()
        {
            const int IterationCount = 10;
            int       iteration      = 0;
            Random    random         = RandomManager.CreateRandom(SeedVariatorType.CallingMethod);

            MethodInfo setValueMethodGeneric =
                typeof(TupleBehaviorTestBase).GetMethod("SetValue", BindingFlags.NonPublic | BindingFlags.Static);
            IList <TupleDescriptor> descriptorList = new List <TupleDescriptor>();

            while (iteration++ < IterationCount)
            {
                int         fieldCount = random.Next(0, MaxFieldCount);
                List <Type> fields     = new List <Type>(fieldCount);
                for (int i = 0; i < fieldCount; i++)
                {
                    fields.Add(fieldTypes[random.Next(0, fieldTypes.Length - 1)]);
                }
                TupleDescriptor descriptor = TupleDescriptor.Create(fields);
                descriptorList.Add(descriptor);
            }

            foreach (TupleDescriptor descriptor in descriptorList)
            {
                DummyTuple dummyTuple = new DummyTuple(descriptor);
                ITuple     tuple      = CreateTestTuple(descriptor);
                for (int fieldIndex = 0; fieldIndex < tuple.Count / 2; fieldIndex++)
                {
                    Type       type           = descriptor[fieldIndex];
                    MethodInfo setValueMethod = setValueMethodGeneric.MakeGenericMethod(type);
                    setValueMethod.Invoke(null, new object[] { dummyTuple, tuple, fieldIndex, random });
                }
                AssertAreSame(dummyTuple, tuple);
            }
        }
示例#2
0
 public override Xtensive.Tuples.Tuple Clone()
 {
   DummyTuple tuple = (DummyTuple)CreateNew();
   tuple.values = (object[])values.Clone();
   tuple.available = available;
   return tuple;
 }
示例#3
0
        public void EmptyFieldsTest()
        {
            var d          = TupleDescriptor.Create(Array.Empty <Type>());
            var dummyTuple = new DummyTuple(d);
            var tuple      = CreateTestTuple(d);

            Assert.AreEqual(0, tuple.Count);
        }
        public void EmptyFieldsTest()
        {
            List <Type>     fields     = new List <Type>();
            TupleDescriptor descriptor = TupleDescriptor.Create(fields);
            DummyTuple      dummyTuple = new DummyTuple(descriptor);
            ITuple          tuple      = CreateTestTuple(descriptor);

            Assert.AreEqual(0, tuple.Count);
        }
示例#5
0
        public void Test()
        {
            var types      = Enumerable.Range(0, 4).Select(_ => typeof(short)).ToArray();
            var d          = TupleDescriptor.Create(types);
            var dummyTuple = new DummyTuple(d);
            var tuple      = CreateTestTuple(d);

            PopulateData(types, dummyTuple, tuple);
            AssertAreSame(dummyTuple, tuple);
        }
        public void Test()
        {
            IList <Type> types = new List <Type>();

            for (int i = 0; i < 4; i++)
            {
                types.Add(typeof(short));
            }

            TupleDescriptor descriptor = TupleDescriptor.Create(types);
            DummyTuple      dummyTuple = new DummyTuple(descriptor);
            ITuple          tuple      = CreateTestTuple(descriptor);

            PopulateData(types, dummyTuple, tuple);
            AssertAreSame(dummyTuple, tuple);
        }
        public void MemoryUsageTest()
        {
            const int iterationCount = 1000000;
            var       descriptor     = TupleDescriptor.Create(typicalFieldTypes);
            var       tuple          = Xtensive.Tuples.Tuple.Create(descriptor);
            var       dummyTuple     = new DummyTuple(descriptor);
            var       tuplesList     = new List <Xtensive.Tuples.Tuple>(iterationCount);

            int iteration = 0;

            using (new Measurement("DummyTuple memory usage", iterationCount))
                while (iteration++ <= iterationCount)
                {
                    tuplesList.Add(dummyTuple.CreateNew());
                }
            tuplesList.Clear();
            TestHelper.CollectGarbage(true);
            iteration = 0;
            using (new Measurement("Tuple memory usage", iterationCount))
                while (iteration++ <= iterationCount)
                {
                    tuplesList.Add(tuple.CreateNew());
                }
        }