public void TestQueryOnUntypedField()
        {
            IList <ValueTypeHolder> holders = new List <ValueTypeHolder>(Flatten(ObjectsToStore()));

            ValueTypeHolder greatest       = holders[0];
            ValueTypeHolder secondGreatest = holders[0];

            foreach (ValueTypeHolder holder in holders)
            {
                IComparable actual = (IComparable)holder.Value;
                if (actual.CompareTo(greatest.Value) > 0)
                {
                    secondGreatest = greatest;
                    greatest       = holder;
                }
                else if (actual.CompareTo(secondGreatest.Value) > 0)
                {
                    secondGreatest = holder;
                }
            }

            Assert.AreNotEqual(greatest, secondGreatest);

            IQuery query = NewQuery(typeof(ValueTypeHolder));

            query.Descend("UntypedValue").Constrain(secondGreatest.Value).Greater();

            IObjectSet result = query.Execute();

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(greatest, result[0]);
        }
        protected ValueTypeHolder RetrieveHolderWithValue(T value)
        {
            IObjectSet result = RetrieveHoldersWith(value);

            Assert.AreEqual(1, result.Count);
            ValueTypeHolder actual = (ValueTypeHolder)result[0];

            Assert.AreEqual(value, actual.Value);

            return(actual);
        }
        public void TestIndexedQuery()
        {
            DiagnosticCollector <LoadedFromClassIndex> collector = DiagnosticCollectorFor <LoadedFromClassIndex>();

            ValueTypeHolder expected = ObjectsToOperateOn()[0];
            ValueTypeHolder actual   = RetrieveHolderWithValue(expected.Value);

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected, actual);
            Assert.AreEqual(0, collector.Diagnostics.Count, WithTypeName("Query should go through {0} indexes"));
        }
 public void TestQueryByExample()
 {
     foreach (ValueTypeHolder tbf in ObjectsToOperateOn())
     {
         ValueTypeHolder holder = FindHolderWithValue(tbf.Value);
         IObjectSet      result = Db().QueryByExample(holder);
         Assert.AreEqual(1, result.Count);
         ValueTypeHolder found = (ValueTypeHolder)result[0];
         AssertHolder(holder, found);
     }
 }
Example #5
0
        public static void Main()
        {
            ConstructorInvoker ctor     = Reflect.Constructor(typeof(long));
            MemberGetter       getValue = Reflect.Getter(typeof(long), "m_value");
            MemberSetter       setValue = Reflect.Setter(typeof(long), "m_value");
            long            integer     = (long)ctor();
            ValueTypeHolder holder      = new ValueTypeHolder(integer);        // IMPORTANT!

            setValue(holder, 8L);
            Console.WriteLine(getValue(holder));
            Console.ReadLine();
        }
        private void AssertHolder(T expectedValue)
        {
            IList <ValueTypeHolder> items = Db().Query <ValueTypeHolder>(delegate(ValueTypeHolder candidate) { return(candidate.Value.Equals(expectedValue)); });

            Assert.AreEqual(1, items.Count);
            Assert.IsNotNull(items[0]);

            ValueTypeHolder expected = Find(ObjectsToStore(), delegate(ValueTypeHolder candidate) { return(candidate.Value.Equals(expectedValue)); });

            Assert.IsNotNull(expected);

            Assert.AreEqual(expected, items[0]);
        }
        public void TestUpdate()
        {
            ValueTypeHolder updated = RetrieveHolderWithValue(ObjectsToOperateOn()[0].Value);
            T newValue = UpdateValueFor(updated);

            Store(updated);

            Reopen();

            ValueTypeHolder actual = RetrieveHolderWithValue(newValue);

            Assert.AreEqual(updated, actual);
        }
        public void TestDelete()
        {
            DiagnosticCollector <DeletionFailed> diagnosticCollector = DiagnosticCollectorFor <DeletionFailed>();

            IQuery     query  = NewQuery(typeof(ValueTypeHolder));
            IObjectSet result = query.Execute();

            while (result.HasNext())
            {
                ValueTypeHolder item = (ValueTypeHolder)result.Next();
                Db().Delete(item);
            }

            Assert.IsTrue(diagnosticCollector.Empty, diagnosticCollector.ToString());
        }
            public override bool Equals(object obj)
            {
                ValueTypeHolder rhs = obj as ValueTypeHolder;

                if (rhs == null)
                {
                    return(false);
                }

                if (rhs.GetType() != GetType())
                {
                    return(false);
                }

                return((rhs.Value.CompareTo(Value) == 0) && CompareParent(rhs));
            }
Example #10
0
        public void TestPersonStruct2()
        {
            PersonStruct person = new PersonStruct();

            person.Age             = 0;
            person.Name            = "";
            person.MetersTravelled = 0;

            ValueTypeHolder h      = person;
            Type            type   = person.GetType();
            MultiSetter     setter = Reflect.MultiSetter(type, "totalPeopleCreated", "Age", "name", "MetersTravelled");
            FieldInfo       field  = type.GetField("totalPeopleCreated", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField);

            setter(h, 12, 6, "John Doe", 2.1d);
            person = (PersonStruct)h;
            Assert.IsTrue(person.Name == "John Doe" && person.Age == 6 && person.MetersTravelled == 2.1 && ((int)field.GetValue(null) == 12));
        }
Example #11
0
        public static void Main()
        {
            ConstructorInvoker ctor    = Reflect.Constructor(typeof(Animal), typeof(string), typeof(int));
            MemberGetter       getName = Reflect.Getter(typeof(Animal), "Name");
            MemberGetter       getAge  = Reflect.FieldGetter(typeof(Animal), "Age");
            MemberSetter       setAge  = Reflect.Setter(typeof(Animal), "Age");
            MultiSetter        setBoth = Reflect.MultiSetter(typeof(Animal), "Age", "Name");

            Animal          animal = (Animal)ctor("Charlie", 5);
            ValueTypeHolder holder = new ValueTypeHolder(animal);             // IMPORTANT!

            setAge(holder, 8);
            Console.WriteLine(getName(holder));
            Console.WriteLine(getAge(holder));
            setBoth(holder, 10, "Buster");
            Console.WriteLine(getName(holder));
            Console.WriteLine(getAge(holder));
            Console.ReadLine();
        }
 private bool CompareParent(ValueTypeHolder rhs)
 {
     return(Parent == null
         ? rhs.Parent == null
         : Parent.Equals(rhs.Parent));
 }
 public ValueTypeHolder(T value, ValueTypeHolder parent) : this(value)
 {
     Parent = parent;
 }
 protected virtual T UpdateValueFor(ValueTypeHolder holder)
 {
     return(holder.Value);
 }
        private void AssertHolder(ValueTypeHolder actual, ValueTypeHolder template)
        {
            var expected = FindHolderWithValue(template.Value);

            Assert.AreEqual(expected, actual);
        }
Example #16
0
 protected override Guid UpdateValueFor(ValueTypeHolder holder)
 {
     holder.Value = new Guid(1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB);
     return(holder.Value);
 }
 protected override DateTimeOffset UpdateValueFor(ValueTypeHolder holder)
 {
     holder.Value = holder.Value.AddYears(2009);
     return(holder.Value);
 }