public void VerifyConsistency(IColumn column, VerificationLevel level, ExecutionDetails details) { if (_words.Count > WordCountLimit) { details.AddError(ExecutionDetails.WordIndexBlockTooFull, column.Name, _words.Count); } if (_words.Count != _sets.Count) { details.AddError(ExecutionDetails.WordIndexBlockSizesMismatch, column.Name, _words.Count, _sets.Count); } if (level == VerificationLevel.Full) { // Validate that all IDs in all sets are valid // NOTE: Replacing with a validating GetInSet would be more thorough; check for duplicate values, padding problems, etc. ShortSet allValidItems = new ShortSet(column.Count); allValidItems.Not(); ShortSet items = new ShortSet(ushort.MaxValue); for (ushort i = 0; i < _words.Count; ++i) { items.Clear(); GetInSet(i, items); items.AndNot(allValidItems); if (items.Count() > 0) { details.AddError(ExecutionDetails.WordIndexInvalidItemID, column.Name, _words[i], String.Join(", ", items.Values)); } } } // Ask the Sets and Words columns to self-verify _sets.VerifyConsistency(level, details); _words.VerifyConsistency(level, details); }
public void SortedColumn_Where() { SortedColumn <int> c = ColumnFactory.CreateSortedColumn <int>(new ValueTypeColumn <int>(-1), 0); c.SetSize(8); c[0] = 0; c[1] = 1; c[2] = 1; c[3] = 2; c[4] = 2; c[5] = 8; c[6] = 8; c[7] = 9; ColumnTests.AssertConsistent(c); // Find a middle value Assert.AreEqual("3, 4", ColumnTests.GetMatches(c, Operator.Equals, 2)); // Find the minimum value Assert.AreEqual("0", ColumnTests.GetMatches(c, Operator.Equals, 0)); // Find the maximum value Assert.AreEqual("7", ColumnTests.GetMatches(c, Operator.Equals, 9)); // Find a value not in set (too small) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.Equals, -1)); // Find a value not in set (too big) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.Equals, 10)); // Find not of a value Assert.AreEqual("0, 1, 2, 5, 6, 7", ColumnTests.GetMatches(c, Operator.NotEquals, 2)); // Find not of a value not in set Assert.AreEqual("0, 1, 2, 3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.NotEquals, -1)); // Find less than not in set (too small) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.LessThan, -1)); // Find less than an existing value Assert.AreEqual("0, 1, 2", ColumnTests.GetMatches(c, Operator.LessThan, 2)); // Find less than a gap between values Assert.AreEqual("0, 1, 2, 3, 4", ColumnTests.GetMatches(c, Operator.LessThan, 4)); // Find less than more than set (too big) Assert.AreEqual("0, 1, 2, 3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.LessThan, 99)); // Find less than or equal not in set (too small) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.LessThanOrEqual, -1)); // Find less than or equal an existing value Assert.AreEqual("0, 1, 2, 3, 4", ColumnTests.GetMatches(c, Operator.LessThanOrEqual, 2)); // Find less than or equal a gap between values Assert.AreEqual("0, 1, 2, 3, 4", ColumnTests.GetMatches(c, Operator.LessThanOrEqual, 4)); // Find less than or equal more than set (too big) Assert.AreEqual("0, 1, 2, 3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.LessThanOrEqual, 99)); // Find greater than not in set (too small) Assert.AreEqual("0, 1, 2, 3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThan, -1)); // Find greater than an existing value Assert.AreEqual("5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThan, 2)); // Find greater than a gap between values Assert.AreEqual("5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThan, 4)); // Find greater than more than set (too big) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.GreaterThan, 99)); // Find greater than or equal not in set (too small) Assert.AreEqual("0, 1, 2, 3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThanOrEqual, -1)); // Find greater than or equal an existing value Assert.AreEqual("3, 4, 5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThanOrEqual, 2)); // Find greater than or equal a gap between values Assert.AreEqual("5, 6, 7", ColumnTests.GetMatches(c, Operator.GreaterThanOrEqual, 4)); // Find greater than or equal more than set (too big) Assert.AreEqual("", ColumnTests.GetMatches(c, Operator.GreaterThanOrEqual, 99)); // Verify sorting consistency problems are detected ((IColumn <int>)c.InnerColumn)[0] = 8; ExecutionDetails d = new ExecutionDetails(); c.VerifyConsistency(VerificationLevel.Full, d); Assert.IsFalse(d.Succeeded); }