public void EmptyInitialSet()
        {
            var state = SetOperation.IterateOnDataSource(
                null, new[] { 1, 2, 3, 4 }, null);

            Assert.IsNotNull(state);
            Assert.IsTrue(state is ListDataSourceState);
            Assert.IsNull(state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                Assert.IsFalse(item.IsSelected);
                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                Assert.AreEqual(index.ToString(), item.Text);
                Assert.AreEqual(index.ToString(), item.Value);

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void ApplyingFormat()
        {
            var state = SetOperation.IterateOnDataSource(
                null, new[] { 1, 2, 3, 4 }, DictHelper.Create("textformat=C"));

            Assert.IsNotNull(state);
            Assert.IsTrue(state is ListDataSourceState);
            Assert.IsNull(state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                Assert.IsFalse(item.IsSelected);
                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                Assert.AreEqual(index.ToString("C"), item.Text);
                Assert.AreEqual(index.ToString(), item.Value);

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void MultipleValuesInitialSet_SameTypes()
        {
            var state = SetOperation.IterateOnDataSource(
                new[] { 1, 2 }, new[] { 1, 2, 3, 4 }, null);

            Assert.IsNotNull(state);
            Assert.IsTrue(state is SameTypeOperationState);
            Assert.AreEqual("", state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                if (index == 1 || index == 2)
                {
                    Assert.IsTrue(item.IsSelected);
                }
                else
                {
                    Assert.IsFalse(item.IsSelected);
                }
                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                Assert.AreEqual(index.ToString(), item.Text);
                Assert.AreEqual(index.ToString(), item.Value);

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void NullDataSource()
        {
            var state = SetOperation.IterateOnDataSource(
                new[] { 1, 2, 3, 4 }, null, null);

            Assert.IsNotNull(state);
            Assert.IsTrue(state is NoIterationState);
            Assert.IsNull(state.TargetSuffix);

            Assert.IsFalse(state.MoveNext());
        }
        public void SingleSelectionDifferentTypes()
        {
            var en = CultureInfo.CreateSpecificCulture("pt-br");

            Thread.CurrentThread.CurrentCulture   = en;
            Thread.CurrentThread.CurrentUICulture = en;

            var state = SetOperation.IterateOnDataSource(
                (decimal?)1.5,
                new[] { "1", "1,5", "2" }, null);

            Assert.IsNotNull(state);
            Assert.IsTrue(state is DifferentTypeOperationState);

            var iterated = false;
            var index    = 0;

            foreach (SetItem item in state)
            {
                iterated = true;

                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                if (index == 1)
                {
                    Assert.IsTrue(item.IsSelected);
                    Assert.AreEqual("1,5", item.Text);
                    Assert.AreEqual("1,5", item.Value);
                }
                else
                {
                    Assert.IsFalse(item.IsSelected);
                }

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void SingleValueInitialSet_DifferentTypes_NonPrimitive_NoNameMatching()
        {
            var state = SetOperation.IterateOnDataSource(
                new Role2(1, "Admin"),
                new[] { new Role(0, "User"), new Role(1, "Admin") },
                DictHelper.Create("text=Name", "value=Id", "sourceproperty=identification"));

            Assert.IsNotNull(state);
            Assert.IsTrue(state is DifferentTypeOperationState);
            Assert.AreEqual("Identification", state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                if (index == 1)
                {
                    Assert.IsFalse(item.IsSelected);
                    Assert.AreEqual("User", item.Text);
                    Assert.AreEqual("0", item.Value);
                }
                else
                {
                    Assert.IsTrue(item.IsSelected);
                    Assert.AreEqual("Admin", item.Text);
                    Assert.AreEqual("1", item.Value);
                }

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void MultipleValuesInitialSet_SameTypes_NonPrimitive()
        {
            var state = SetOperation.IterateOnDataSource(
                new[] { new Role(0, "User"), new Role(1, "Admin") },
                new[] { new Role(0, "User"), new Role(1, "Admin") },
                DictHelper.Create("text=Name", "value=Id"));

            Assert.IsNotNull(state);
            Assert.IsTrue(state is SameTypeOperationState);
            Assert.AreEqual("Id", state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);
                Assert.IsTrue(item.IsSelected);

                if (index == 1)
                {
                    Assert.AreEqual("User", item.Text);
                    Assert.AreEqual("0", item.Value);
                }
                else
                {
                    Assert.AreEqual("Admin", item.Text);
                    Assert.AreEqual("1", item.Value);
                }

                index++;
            }

            Assert.IsTrue(iterated);
        }
        public void SingleValueInitialSet_EnumPairs()
        {
            var state = SetOperation.IterateOnDataSource(
                FileMode.Append, new[]
            {
                new Pair <FileMode, string>(FileMode.Append, "append"),
                new Pair <FileMode, string>(FileMode.Create, "create"),
                new Pair <FileMode, string>(FileMode.CreateNew, "new"),
                new Pair <FileMode, string>(FileMode.Open, "open")
            }, DictHelper.Create("value=First", "text=Second"));

            Assert.IsNotNull(state);
            Assert.IsTrue(state is DifferentTypeOperationState);
            Assert.AreEqual("", state.TargetSuffix);

            var iterated = false;
            var index    = 1;

            foreach (SetItem item in state)
            {
                iterated = true;

                if (index == 1)
                {
                    Assert.IsTrue(item.IsSelected);
                }
                else
                {
                    Assert.IsFalse(item.IsSelected);
                }
                Assert.IsNotNull(item.Text);
                Assert.IsNotNull(item.Value);

                index++;
            }

            Assert.IsTrue(iterated);
        }