Example #1
0
        public void SubtractAssign_FromArray_OneValueOfMany_IndexNonZero()
        {
            var tupleArrayType   = EntityWithArrayType.GetDefaultTable(Session, _tableName);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();
            var tempList         = singleEntity.ArrayType.ToList();

            tempList.AddRange(new[] { "999", "9999", "99999", "999999" });
            singleEntity.ArrayType = tempList.ToArray();

            // Get Value to remove
            var indexToRemove = 2;

            string[] valsToDelete   = { singleEntity.ArrayType[indexToRemove] };
            var      expectedEntity = singleEntity.Clone();

            tempList = expectedEntity.ArrayType.ToList();
            tempList.RemoveAt(indexToRemove);
            expectedEntity.ArrayType = tempList.ToArray();

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType
            {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType - ? WHERE Id = ?",
                1,
                valsToDelete, singleEntity.Id);
        }
Example #2
0
        public void SubtractAssign_FromArray_ValNotInArray()
        {
            var tupleArrayType   = EntityWithArrayType.GetDefaultTable(Session, _tableName);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();

            string[] valsToDelete = { "9999" };

            // make sure this value is not in the array
            Assert.AreEqual(1, singleEntity.ArrayType.Length);
            Assert.AreNotEqual(valsToDelete[0], singleEntity.ArrayType[0]);

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType
            {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType - ? WHERE Id = ?",
                1,
                valsToDelete, singleEntity.Id);
        }
Example #3
0
        public void SubtractAssign_FromArray_Duplicates()
        {
            var tupleArrayType   = EntityWithArrayType.GetDefaultTable(Session, _tableName);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();

            Assert.AreEqual(1, singleEntity.ArrayType.Length); // make sure there's only one value in the list
            var indexToRemove = 0;

            singleEntity.ArrayType.ToList().AddRange(new[] { singleEntity.ArrayType[indexToRemove], singleEntity.ArrayType[indexToRemove], singleEntity.ArrayType[indexToRemove] });

            // Get single value to remove
            var valsToDelete   = new[] { singleEntity.ArrayType[indexToRemove] };
            var expectedEntity = singleEntity.Clone();

            expectedEntity.ArrayType = new string[] { };

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType
            {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType - ? WHERE Id = ?",
                1,
                valsToDelete, singleEntity.Id);
        }
Example #4
0
        public void Append_ToArray_AppendEmptyArray_QueryUsingCql()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;

            string[]            arrToAdd       = new string[] { };
            EntityWithArrayType singleEntity   = expectedEntities.First();
            EntityWithArrayType expectedEntity = singleEntity.Clone();
            List <string>       strValsAsList  = new List <string>();

            strValsAsList.AddRange(expectedEntity.ArrayType);
            strValsAsList.AddRange(arrToAdd);
            expectedEntity.ArrayType = strValsAsList.ToArray();
            // Append the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Append(arrToAdd)
            }).Update().Execute();
            // Validate the final state of the data
            List <Row> rows = _session.Execute("SELECT * from " + table.Name + " where id='" + expectedEntity.Id + "'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            string[] actualArr = rows[0].GetValue <string[]>("arraytype");
            Assert.AreEqual(expectedEntity.ArrayType, actualArr);
        }
Example #5
0
        public void Append_ToArray_AppendEmptyArray_QueryUsingCql()
        {
            var(table, expectedEntities) = EntityWithArrayType.GetDefaultTable(Session, _tableName);

            var arrToAdd       = new string[] { };
            var singleEntity   = expectedEntities.First();
            var expectedEntity = singleEntity.Clone();
            var strValsAsList  = new List <string>();

            strValsAsList.AddRange(expectedEntity.ArrayType);
            strValsAsList.AddRange(arrToAdd);
            expectedEntity.ArrayType = strValsAsList.ToArray();

            // Append the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Append(arrToAdd)
            })
            .Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType + ? WHERE Id = ?",
                1,
                arrToAdd, singleEntity.Id);
        }
Example #6
0
        public void Append_ToArray()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;

            string[]            arrToAdd       = new string[] { "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), };
            EntityWithArrayType singleEntity   = expectedEntities.First();
            EntityWithArrayType expectedEntity = singleEntity.Clone();
            List <string>       strValsAsList  = new List <string>();

            strValsAsList.AddRange(expectedEntity.ArrayType);
            strValsAsList.AddRange(arrToAdd);
            expectedEntity.ArrayType = strValsAsList.ToArray();
            // Append the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Append(arrToAdd)
            }).Update().Execute();
            // Validate the final state of the data
            var entityList = table.Where(m => m.Id == singleEntity.Id).ExecuteAsync().Result.ToList();

            Assert.AreEqual(1, entityList.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            expectedEntity.AssertEquals(entityList[0]);
        }
        public void SubtractAssign_FromArray_AllValues_QueryUsingCql()
        {
            var tupleListType    = EntityWithArrayType.SetupDefaultTable(Session);
            var table            = tupleListType.Item1;
            var expectedEntities = tupleListType.Item2;

            var singleEntity   = expectedEntities.First();
            var expectedEntity = singleEntity.Clone();

            expectedEntity.ArrayType = new string[] {};

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(singleEntity.ArrayType)
            }).Update().Execute();

            // Validate final state of the data
            var rows = Session.Execute($"SELECT * from {table.Name} where id=\'{expectedEntity.Id}\'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            var actualArr = rows[0].GetValue <object>("arraytype");

            Assert.AreEqual(null, actualArr);
        }
Example #8
0
        public void Prepend_ToArray_QueryUsingCql()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;

            string[]      arrToAdd     = new string[] { "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), };
            List <string> listReversed = arrToAdd.ToList();

            listReversed.Reverse();
            string[] arrReversed = listReversed.ToArray();

            EntityWithArrayType singleEntity   = expectedEntities.First();
            EntityWithArrayType expectedEntity = singleEntity.Clone();
            List <string>       strValsAsList  = new List <string>();

            strValsAsList.AddRange(expectedEntity.ArrayType);
            strValsAsList.InsertRange(0, arrReversed);
            expectedEntity.ArrayType = strValsAsList.ToArray();

            // Append the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Prepend(arrToAdd)
            }).Update().Execute();

            // Validate the final state of the data
            List <Row> rows = _session.Execute("SELECT * from " + table.Name + " where id='" + expectedEntity.Id + "'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            string[] actualArr = rows[0].GetValue <string[]>("arraytype");
            CollectionAssert.AreEquivalent(expectedEntity.ArrayType, actualArr);
        }
Example #9
0
        public void SubtractAssign_FromArray_ValNotInArray()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;
            EntityWithArrayType         singleEntity     = expectedEntities.First();

            string[] valsToDelete = { "9999" };

            // make sure this value is not in the array
            Assert.AreEqual(1, singleEntity.ArrayType.Length);
            Assert.AreNotEqual(valsToDelete[0], singleEntity.ArrayType[0]);

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            // Validate final state of the data
            List <Row> rows = _session.Execute("SELECT * from " + table.Name + " where id='" + singleEntity.Id + "'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            object actualArr = rows[0].GetValue <object>("arraytype");

            Assert.AreEqual(singleEntity.ArrayType, actualArr);
        }
Example #10
0
        public void SubtractAssign_FromArray_AllValues_QueryUsingCql()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleListType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleListType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleListType.Item2;

            EntityWithArrayType singleEntity   = expectedEntities.First();
            EntityWithArrayType expectedEntity = singleEntity.Clone();

            expectedEntity.ArrayType = new string[] {};

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(singleEntity.ArrayType)
            }).Update().Execute();

            // Validate final state of the data
            List <Row> rows = _session.Execute("SELECT * from " + table.Name + " where id='" + expectedEntity.Id + "'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            object actualArr = rows[0].GetValue <object>("arraytype");

            Assert.AreEqual(null, actualArr);
        }
Example #11
0
        public void Prepend_ToArray_QueryUsingCql()
        {
            var(table, expectedEntities) = EntityWithArrayType.GetDefaultTable(Session, _tableName);

            var arrToAdd = new string[]
            {
                "random_" + Randomm.RandomAlphaNum(10),
                "random_" + Randomm.RandomAlphaNum(10),
                "random_" + Randomm.RandomAlphaNum(10),
            };
            var listReversed = arrToAdd.ToList();

            listReversed.Reverse();
            var arrReversed = listReversed.ToArray();

            var singleEntity   = expectedEntities.First();
            var expectedEntity = singleEntity.Clone();
            var strValsAsList  = new List <string>();

            strValsAsList.AddRange(expectedEntity.ArrayType);
            strValsAsList.InsertRange(0, arrReversed);
            expectedEntity.ArrayType = strValsAsList.ToArray();

            // Append the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Prepend(arrToAdd)
            })
            .Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ? + ArrayType WHERE Id = ?",
                1,
                arrToAdd, singleEntity.Id);
        }
Example #12
0
        public void Prepend_ToArray()
        {
            var tupleArrayType   = EntityWithArrayType.GetDefaultTable(Session, _tableName);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;

            var arrToAdd = new string[]
            {
                "random_" + Randomm.RandomAlphaNum(10),
                "random_" + Randomm.RandomAlphaNum(10),
                "random_" + Randomm.RandomAlphaNum(10),
            };
            var singleEntity = expectedEntities.First();

            // Append the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Prepend(arrToAdd)
            })
            .Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ? + ArrayType WHERE Id = ?",
                1,
                arrToAdd, singleEntity.Id);
        }
Example #13
0
        public void Prepend_ToArray()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;

            string[]            arrToAdd     = new string[] { "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), "random_" + Randomm.RandomAlphaNum(10), };
            EntityWithArrayType singleEntity = expectedEntities.First();

            // Append the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.Prepend(arrToAdd)
            }).Update().Execute();
            // Validate the final state of the data
            var entityList = table.Where(m => m.Id == singleEntity.Id).ExecuteAsync().Result.ToList();

            Assert.AreEqual(1, entityList.Count);
            CollectionAssert.AreEqual(arrToAdd.Concat(singleEntity.ArrayType).OrderBy(v => v), entityList[0].ArrayType.OrderBy(v => v));
        }
Example #14
0
        public void SubtractAssign_FromArray_AllValues_QueryUsingCql()
        {
            var(table, expectedEntities) = EntityWithArrayType.GetDefaultTable(Session, _tableName);

            var singleEntity   = expectedEntities.First();
            var expectedEntity = singleEntity.Clone();

            expectedEntity.ArrayType = new string[] { };

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType
            {
                ArrayType = CqlOperator.SubstractAssign(singleEntity.ArrayType)
            }).Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType - ? WHERE Id = ?",
                1,
                singleEntity.ArrayType, singleEntity.Id);
        }
Example #15
0
        public void SubtractAssign_FromArray_EmptyArray()
        {
            var tupleArrayType   = EntityWithArrayType.GetDefaultTable(Session, _tableName);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();

            string[] valsToDelete = { };

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id)
            .Select(t => new EntityWithArrayType
            {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            VerifyBoundStatement(
                $"UPDATE {_tableName} SET ArrayType = ArrayType - ? WHERE Id = ?",
                1,
                valsToDelete, singleEntity.Id);
        }
        public void SubtractAssign_FromArray_Duplicates()
        {
            var tupleArrayType   = EntityWithArrayType.SetupDefaultTable(Session);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();

            Assert.AreEqual(1, singleEntity.ArrayType.Length); // make sure there's only one value in the list
            var indexToRemove = 0;

            singleEntity.ArrayType.ToList().AddRange(new[] { singleEntity.ArrayType[indexToRemove], singleEntity.ArrayType[indexToRemove], singleEntity.ArrayType[indexToRemove] });

            // Overwrite one of the rows, validate the data got there
            table.Insert(singleEntity).Execute();
            var rows = Session.Execute($"SELECT * from {table.Name} where id=\'{singleEntity.Id}\'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            var actualArr = rows[0].GetValue <string[]>("arraytype");

            Assert.AreEqual(singleEntity.ArrayType, actualArr);

            // Get single value to remove
            var valsToDelete   = new [] { singleEntity.ArrayType[indexToRemove] };
            var expectedEntity = singleEntity.Clone();

            expectedEntity.ArrayType = new string[] {};
            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            // Validate final state of the data
            rows = Session.Execute($"SELECT * from {table.Name} where id=\'{expectedEntity.Id}\'").GetRows().ToList();
            Assert.AreEqual(1, rows.Count);
            var probablyNullArr = rows[0].GetValue <object>("arraytype");

            Assert.AreEqual(null, probablyNullArr);
        }
Example #17
0
        public void SubtractAssign_FromArray_OneValueOfMany_IndexNonZero()
        {
            Tuple <Table <EntityWithArrayType>, List <EntityWithArrayType> > tupleArrayType = EntityWithArrayType.SetupDefaultTable(_session);
            Table <EntityWithArrayType> table            = tupleArrayType.Item1;
            List <EntityWithArrayType>  expectedEntities = tupleArrayType.Item2;
            EntityWithArrayType         singleEntity     = expectedEntities.First();
            List <string> tempList = singleEntity.ArrayType.ToList();

            tempList.AddRange(new[] { "999", "9999", "99999", "999999" });
            singleEntity.ArrayType = tempList.ToArray();

            // Overwrite one of the rows
            table.Insert(singleEntity).Execute();

            // Get Value to remove
            int indexToRemove = 2;

            string[]            valsToDelete   = { singleEntity.ArrayType[indexToRemove] };
            EntityWithArrayType expectedEntity = singleEntity.Clone();

            tempList = expectedEntity.ArrayType.ToList();
            tempList.RemoveAt(indexToRemove);
            expectedEntity.ArrayType = tempList.ToArray();

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            // Validate final state of the data
            List <Row> rows = _session.Execute("SELECT * from " + table.Name + " where id='" + expectedEntity.Id + "'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            Assert.AreEqual(expectedEntity.ArrayType, rows[0].GetValue <string[]>("arraytype"));
        }
        public void SubtractAssign_FromArray_OneValueOfMany_IndexZero()
        {
            var tupleArrayType   = EntityWithArrayType.SetupDefaultTable(Session);
            var table            = tupleArrayType.Item1;
            var expectedEntities = tupleArrayType.Item2;
            var singleEntity     = expectedEntities.First();
            var tempList         = singleEntity.ArrayType.ToList();

            tempList.AddRange(new[] { "999", "9999", "99999", "999999" });
            singleEntity.ArrayType = tempList.ToArray();

            // Overwrite one of the rows
            table.Insert(singleEntity).Execute();

            // Get value to remove
            var indexToRemove = 0;

            string[] valsToDelete   = { singleEntity.ArrayType[indexToRemove] };
            var      expectedEntity = singleEntity.Clone();

            tempList = expectedEntity.ArrayType.ToList();
            tempList.RemoveAt(indexToRemove);
            expectedEntity.ArrayType = tempList.ToArray();

            // SubstractAssign the values
            table.Where(t => t.Id == singleEntity.Id).Select(t => new EntityWithArrayType {
                ArrayType = CqlOperator.SubstractAssign(valsToDelete)
            }).Update().Execute();

            // Validate final state of the data
            var rows = Session.Execute($"SELECT * from {table.Name} where id=\'{expectedEntity.Id}\'").GetRows().ToList();

            Assert.AreEqual(1, rows.Count);
            Assert.AreNotEqual(expectedEntity.ArrayType, singleEntity.ArrayType);
            Assert.AreEqual(expectedEntity.ArrayType, rows[0].GetValue <string[]>("arraytype"));
        }