Database Unit Testing Results Module Documentation
1. Purpose
This module provides an in-memory representation of database result sets for unit testing purposes. It enables parsing SQL query results into a structured object model (Database, Table, Row, Column), serializing and deserializing this model to/from XML files, and comparing database states for equality. The module serves as the core data model and I/O layer for database unit testing comparisons, allowing test results to be persisted and compared against expected outcomes.
2. Public Interface
All types in this module are internal to the DatabaseUnitTesting.Utilities.Results namespace.
Row (class)
Member
Signature
Description
Constructor
Row(string type)
Creates a new row with the specified type (converted to lowercase).
AddColumn
void AddColumn(Column column)
Adds a column to the row. Invalidates the cached KeyString.
KeyString
string KeyString { get; }
Lazily computed and cached string key for comparison. Format: _type + DELIMITER + each column's SortString.
ColumnCount
int ColumnCount { get; }
Returns the number of columns in the row.
DELIMITER
const string DELIMITER = "\x1e;;"
Delimiter used when constructing KeyString.
Column (class)
Member
Signature
Description
Constructor
Column(string name, object value)
Creates a column with the given name and value. Value is converted via Convert(). SortString is constructed as name.ToLower() + DELIMITER + _value.
Convert
static string Convert(object value)
Converts object to string. Special handling for byte[] (hex format "0x...") and DateTime (custom format with trimmed trailing zeros/colons). Other types use ToString().
Name
string Name { get; }
Returns the column name.
Value
string Value { get; }
Returns the converted string value.
SortString
string SortString { get; }
Returns the pre-computed sort/comparison string.
DELIMITER
const string DELIMITER = "\x1f;;"
Delimiter used in SortString.
Database (class)
Member
Signature
Description
AddTable
void AddTable(Table table)
Adds a table to the database. If the table already exists (by equality), increments its count. Updates _tableCount and _hashCode.
ContainsTable
bool ContainsTable(Table table)
Returns true if the database contains a table equal to the given one.
GetCount
int GetCount(Table table)
Returns the count of how many times the given table was added.
TableCount
int TableCount { get; }
Total number of tables added (including duplicates).