コード例 #1
0
        public void DateTimeFormattingWithCulture()
        {
            Customer customer = Repository.SampleCustomer;

            Collapse collapse =
                new Collapse()
                .SetDateTimeFormat(CultureInfo.CurrentCulture);

            XDocument doc =
                collapse.ExportToXml(customer, Res.FileContent("FormattingDates"));

            List<XElement> orders = doc.Root.Elements("order").ToList();
            List<XElement> valOrders = doc.Root.Elements("valOrder").ToList();

            for (int i = 0; i < orders.Count; i++)
            {
                XElement orderElement = orders[i];
                XElement valOrderElement = valOrders[i];
                Order order = customer.Orders[i];

                String expectedDateTimeString = order.Timestamp.ToString(CultureInfo.CurrentCulture);

                Assert.AreEqual(expectedDateTimeString, orderElement.Value);
                Assert.AreEqual(expectedDateTimeString, orderElement.Attribute("time").Value);
                Assert.AreEqual(expectedDateTimeString, valOrderElement.Value.Trim());
            }
        }
コード例 #2
0
        public void ForeachCollectionIdentifierContainsWordIn()
        {
            Repository repository = new Repository();

            XDocument doc =
                new Collapse()
                .ExportToXml(repository, Res.FileContent("ForeachCollectionIdentifierContainsIn"));
        }
コード例 #3
0
        public void ForeachFromIEnumerableOfValueTypeCovariance()
        {
            Repository repository = new Repository();

            XDocument doc =
                new Collapse()
                .ExportToXml(repository, Res.FileContent("ValidXmlCovarianceInValueTypes"));
        }
コード例 #4
0
        public void DateTimeFormattingInvalidDateTimeFormat()
        {
            Customer customer = Repository.SampleCustomer;

            String invalidFormat = "a";

            Collapse collapse = new Collapse().SetDateTimeFormat(invalidFormat);
        }
コード例 #5
0
        public void Chaining()
        {
            Collapse collapse = new Collapse();

            Assert.AreSame(collapse, collapse.SetNumberFormat(CultureInfo.CurrentCulture));
            Assert.AreSame(collapse, collapse.SetDateTimeFormat(CultureInfo.CurrentCulture));
            Assert.AreSame(collapse, collapse.SetDateTimeFormat("yyyy"));
            Assert.AreSame(collapse, collapse.SetFilter("isValid", args => true));
        }
コード例 #6
0
        public void RootValidAndContainsCorrectNumberOfChildren()
        {
            Repository repository = new Repository();

            XDocument doc =
                new Collapse()
                .ExportToXml(repository, Res.FileContent("ForeachCustomer"));

            Assert.AreEqual("customers", doc.Root.Name);
            Assert.AreEqual(repository.Customers.Count, doc.Root.Elements("customer").Count());
            Assert.AreEqual(doc.Root.Elements().Count(), doc.Root.Elements("customer").Count());
        }
コード例 #7
0
        public void FilterAttribute()
        {
            Collapse collapse = new Collapse()
                .SetFilter("isValidName", args => args[0].Value<Customer>().Name.Contains("Mark"));

            XDocument doc = collapse.ExportToXml(
                new Repository(),
                Res.FileContent("FilterAttribute"));

            List<XElement> elements = doc.Root.Elements("customer").ToList();

            Assert.AreEqual(1, elements[0].Attributes("name").Count());
            Assert.AreEqual(0, elements[1].Attributes("name").Count());
        }
コード例 #8
0
        public void DateTimeFormattingWithString()
        {
            String format = "yyyy-MM-dd HH:mm:ss";

            XDocument doc =
                new Collapse()
                .SetDateTimeFormat(format)
                .ExportToXml(Repository.SampleCustomer, Res.FileContent("FormattingDates"));

            List<XElement> orders = doc.Root.Elements("order").ToList();
            List<XElement> valOrders = doc.Root.Elements("valOrder").ToList();

            for (int i = 0; i < orders.Count; i++)
            {
                XElement orderElement = orders[i];
                XElement valOrderElement = valOrders[i];
                Order order = Repository.SampleCustomer.Orders[i];

                String expectedDateTimeString = order.Timestamp.ToString(format);

                Assert.AreEqual(expectedDateTimeString, orderElement.Value);
                Assert.AreEqual(expectedDateTimeString, orderElement.Attribute("time").Value);
                Assert.AreEqual(expectedDateTimeString, valOrderElement.Value.Trim());
            }

            format = "ss . mm . HH hhmmss yyy - MM d";
            doc = new Collapse()
                .SetDateTimeFormat(format)
                .ExportToXml(Repository.SampleCustomer, Res.FileContent("FormattingDates"));

            orders = doc.Root.Elements("order").ToList();
            valOrders = doc.Root.Elements("valOrder").ToList();

            for (int i = 0; i < orders.Count; i++)
            {
                XElement orderElement = orders[i];
                XElement valOrderElement = valOrders[i];
                Order order = Repository.SampleCustomer.Orders[i];

                String expectedDateTimeString = order.Timestamp.ToString(format);

                Assert.AreEqual(expectedDateTimeString, orderElement.Value);
                Assert.AreEqual(expectedDateTimeString, orderElement.Attribute("time").Value);
                Assert.AreEqual(expectedDateTimeString, valOrderElement.Value.Trim());
            }
        }
コード例 #9
0
        public void ForeachElementCorrectlyTransformed()
        {
            Repository repository = new Repository();

            XDocument doc =
                new Collapse()
                .ExportToXml(repository, Res.FileContent("ForeachCustomer"));

            List<XElement> customersXml = doc.Root.Elements().ToList();
            for (int i = 0; i < repository.Customers.Count; i++)
            {
                Customer customer = repository.Customers[i];
                XElement customerXml = customersXml[i];

                Assert.AreEqual(customer.Name, customerXml.Attribute("name").Value);
            }
        }
コード例 #10
0
        public void InitializationUsingConstructor()
        {
            Collapse collapse = new Collapse();
            Assert.IsTrue(collapse.IsInlineTextTransformEnabled);
            Assert.AreEqual(MissingFilterBehavior.ThrowException, collapse.MissingFilterBehavior);

            collapse = new Collapse(MissingFilterBehavior.IncludeItem);
            Assert.IsTrue(collapse.IsInlineTextTransformEnabled);
            Assert.AreEqual(MissingFilterBehavior.IncludeItem, collapse.MissingFilterBehavior);

            collapse = new Collapse(MissingFilterBehavior.OmitItem);
            Assert.IsTrue(collapse.IsInlineTextTransformEnabled);
            Assert.AreEqual(MissingFilterBehavior.OmitItem, collapse.MissingFilterBehavior);

            collapse = new Collapse(MissingFilterBehavior.OmitItem, false);
            Assert.IsFalse(collapse.IsInlineTextTransformEnabled);
            Assert.AreEqual(MissingFilterBehavior.OmitItem, collapse.MissingFilterBehavior);
        }
コード例 #11
0
        public void TextNodeIsValid()
        {
            Repository rep = new Repository();

            XDocument xDocument =
                new Collapse()
                .ExportToXml(rep, Res.FileContent("TextNode"));

            Assert.AreEqual("customers", xDocument.Root.Name);

            List<XElement> customers = xDocument.Root.Elements("customer").ToList();

            for (int i = 0; i < customers.Count; i++)
            {
                Assert.AreEqual(
                    String.Format("Customer's name is {0}.",
                    rep.Customers[i].Name),
                    customers[i].Value);
            }
        }
コード例 #12
0
        public void FilterOnValue()
        {
            // Only Mark should have his name shown
            Collapse collapse = new Collapse()
                .SetFilter("isCustomerValid", args => args[0].Value<Customer>().Name.ToLower().Contains("mark"));

            Repository rep = new Repository();

            XDocument doc = collapse.ExportToXml(
                rep,
                Res.FileContent("FilterOnValue"));

            Debug.WriteLine(doc.ToString());

            List<XElement> customers = doc.Root.Elements("customer").ToList();
            Assert.AreEqual(rep.Customers[0].Name, customers[0].Value.Trim());
            Assert.AreEqual(string.Empty, customers[1].Value.Trim());
        }
コード例 #13
0
        public void ValidFilterMissingFilterBehaviorInclude()
        {
            Repository rep = new Repository();

            XDocument doc =
                new Collapse(MissingFilterBehavior.IncludeItem)
                .ExportToXml(rep, Res.FileContent("ValidXmlWithFilter"));

            Assert.AreEqual(1, doc.Root.Elements("description").Count());
            Assert.AreEqual(rep.Customers.Count, doc.Root.Elements("customer").Count());
        }
コード例 #14
0
        public void ValidFilterMissingFilterBehaviorOmit()
        {
            Collapse collapse = new Collapse(MissingFilterBehavior.OmitItem);

            XDocument doc = collapse.ExportToXml(
                new Repository(),
                Res.FileContent("ValidXmlWithFilter"));

            Assert.AreEqual(0, doc.Root.Elements("description").Count());
            Assert.AreEqual(0, doc.Root.Elements("customer").Count());
        }
コード例 #15
0
        public void InitializationWithValidXmlDisableInlineTextTransform()
        {
            Collapse collapse = new Collapse(transformInlineText: false);

            Assert.IsFalse(collapse.IsInlineTextTransformEnabled);

            XDocument doc = collapse.ExportToXml(
                new Repository(),
                Res.FileContent("ValidInlineText"));

            List<XElement> customers = doc.Root.Elements("customer").ToList();

            foreach (XElement item in customers)
                Assert.AreEqual("(cx|c.Name)", item.Value);
        }
コード例 #16
0
 public void InitializationWithValidXmlInlineTextTransformDefaultValue()
 {
     Collapse collapse = new Collapse();
     Assert.IsTrue(collapse.IsInlineTextTransformEnabled);
 }
コード例 #17
0
        public void ValidFilterMissingFilterBehaviorSomeFound()
        {
            Collapse collapse = new Collapse(MissingFilterBehavior.OmitItem)
                .SetFilter("hasCustomers", args => args[0].Value<List<Customer>>().Any());

            XDocument doc = collapse.ExportToXml(
                new Repository(),
                Res.FileContent("ValidXmlWithFilter"));

            Assert.AreEqual(1, doc.Root.Elements("description").Count());
            Assert.AreEqual(0, doc.Root.Elements("customer").Count());
        }
コード例 #18
0
        public void ValidFilter()
        {
            String template = Res.FileContent("ValidXmlWithFilter");
            Repository repository = new Repository();

            // Normally, repository contains 2 customers which should be in results

            // Set filter which should leave only 1 customer in results
            Collapse collapse = new Collapse()
                .SetFilter("isCustomerValid", args => args[0].Value<String>().Contains("Mark"))
                .SetFilter("hasCustomers", args => args[0].Value<List<Customer>>().Any());

            XDocument xDocument = collapse.ExportToXml(repository, template);
            List<XElement> customers = xDocument.Root.Elements("customer").ToList();
            Assert.AreEqual(1, customers.Count);

            // Set filter which should filter out all customers from results
            collapse = new Collapse()
                .SetFilter("isCustomerValid", args => args[1].Value<int>() > 20)
                .SetFilter("hasCustomers", args => args[0].Value<List<Customer>>().Any());

            xDocument = collapse.ExportToXml(repository, template);
            customers = xDocument.Root.Elements("customer").ToList();
            Assert.AreEqual(0, customers.Count);
            Assert.IsTrue(xDocument.Root.Elements("description").Count() == 1);

            // Set filter which should filter out all customers from results
            collapse = new Collapse()
                .SetFilter("isCustomerValid", args => args[1].Value<int>() > 20)
                .SetFilter("hasCustomers", args => false);

            xDocument = collapse.ExportToXml(repository, template);
            customers = xDocument.Root.Elements("customer").ToList();
            Assert.AreEqual(0, customers.Count);
            Assert.IsTrue(xDocument.Root.Elements("description").Count() == 0);
        }
コード例 #19
0
        public void NumberFormattingWithCulture()
        {
            Repository rep = new Repository();
            Collapse collapse = new Collapse();

            XDocument doc =
                collapse.ExportToXml(rep, Res.FileContent("FormattingNumbers"));

            List<XElement> customerElements = doc.Root.Elements("customer").ToList();
            List<XElement> valCustomers = doc.Root.Elements("valCustomer").ToList();

            for (int i = 0; i < customerElements.Count; i++)
            {
                XElement customerElement = customerElements[i];
                XElement valCustomerElement = customerElements[i];
                Customer customer = rep.Customers[i];

                String expectedNumberString = customer.Coefficient.ToString(CultureInfo.CurrentCulture);

                Assert.AreEqual(expectedNumberString, customerElement.Value);
                Assert.AreEqual(expectedNumberString, customerElement.Attribute("coefficient").Value);
                Assert.AreEqual(expectedNumberString, valCustomerElement.Value.Trim());
            }
        }
コード例 #20
0
        public void NumberFormattingWithFormatProvider()
        {
            NumberFormatInfo nfi = new NumberFormatInfo() { NumberDecimalSeparator = "@" };
            Repository rep = new Repository();

            Collapse collapse = new Collapse()
                .SetNumberFormat(nfi);

            XDocument doc =
                collapse.ExportToXml(rep, Res.FileContent("FormattingNumbers"));

            List<XElement> customerElements = doc.Root.Elements("customer").ToList();
            List<XElement> valCustomers = doc.Root.Elements("valCustomer").ToList();

            for (int i = 0; i < customerElements.Count; i++)
            {
                XElement customerElement = customerElements[i];
                XElement valCustomerElement = customerElements[i];
                Customer customer = rep.Customers[i];

                String expectedNumberString = customer.Coefficient.ToString(nfi);

                Assert.AreEqual(expectedNumberString, customerElement.Value);
                Assert.AreEqual(expectedNumberString, customerElement.Attribute("coefficient").Value);
                Assert.AreEqual(expectedNumberString, valCustomerElement.Value.Trim());
            }
        }