ShouldList

Undocumented in source.

Members

Aliases

U
alias U = Unqual!(ElementType!T)
Undocumented in source.

Functions

approximately
auto approximately(V expectedValueList, double maxRelDiff, string file, size_t line)
Undocumented in source. Be warned that the author may not have intended to support it.
contain
auto contain(V expectedValueList, string file, size_t line)
Undocumented in source. Be warned that the author may not have intended to support it.
contain
auto contain(U value, string file, size_t line)
Undocumented in source. Be warned that the author may not have intended to support it.
containOnly
auto containOnly(V expectedValueList, string file, size_t line)
Undocumented in source. Be warned that the author may not have intended to support it.
equal
auto equal(V expectedValueList, string file, size_t line)
Undocumented in source. Be warned that the author may not have intended to support it.

Mixins

__anonymous
mixin ShouldCommons
Undocumented in source.
__anonymous
mixin DisabledShouldThrowableCommons
Undocumented in source.

Examples

When there is a lazy array that throws an it should throw that exception

int[] someLazyArray() {
  throw new Exception("This is it.");
}

({
  someLazyArray.should.equal([]);
}).should.throwAnyException.withMessage("This is it.");

({
  someLazyArray.should.approximately([], 3);
}).should.throwAnyException.withMessage("This is it.");

({
  someLazyArray.should.contain([]);
}).should.throwAnyException.withMessage("This is it.");

({
  someLazyArray.should.contain(3);
}).should.throwAnyException.withMessage("This is it.");

const range contain

const(int)[] data = [1, 2, 3];
data.map!"a".should.contain([2, 1]);
data.map!"a".should.contain(data);
[1, 2, 3].should.contain(data);

({
  data.map!"a * 4".should.not.contain(data);
}).should.not.throwAnyException;

immutable range contain

immutable(int)[] data = [1, 2, 3];
data.map!"a".should.contain([2, 1]);
data.map!"a".should.contain(data);
[1, 2, 3].should.contain(data);

({
  data.map!"a * 4".should.not.contain(data);
}).should.not.throwAnyException;

contain only

({
  [1, 2, 3].should.containOnly([3, 2, 1]);
  [1, 2, 3].should.not.containOnly([2, 1]);

  [1, 2, 2].should.not.containOnly([2, 1]);
  [1, 2, 2].should.containOnly([2, 1, 2]);

  [2, 2].should.containOnly([2, 2]);
  [2, 2, 2].should.not.containOnly([2, 2]);
}).should.not.throwException!TestException;

auto msg = ({
  [1, 2, 3].should.containOnly([2, 1]);
}).should.throwException!TestException.msg;

msg.split('\n')[0].should.equal("[1, 2, 3] should contain only [2, 1].");

msg = ({
  [1, 2].should.not.containOnly([2, 1]);
}).should.throwException!TestException.msg;

msg.split('\n')[0].strip.should.equal("[1, 2] should not contain only [2, 1].");

msg = ({
  [2, 2].should.containOnly([2]);
}).should.throwException!TestException.msg;

msg.split('\n')[0].should.equal("[2, 2] should contain only [2].");

msg = ({
  [3, 3].should.containOnly([2]);
}).should.throwException!TestException.msg;

msg.split('\n')[0].should.equal("[3, 3] should contain only [2].");

msg = ({
  [2, 2].should.not.containOnly([2, 2]);
}).should.throwException!TestException.msg;

msg.split('\n')[0].should.equal("[2, 2] should not contain only [2, 2].");

contain only with void array

int[] list;
list.should.containOnly([]);

const range containOnly

const(int)[] data = [1, 2, 3];
data.map!"a".should.containOnly([3, 2, 1]);
data.map!"a".should.containOnly(data);
[1, 2, 3].should.containOnly(data);

({
  data.map!"a * 4".should.not.containOnly(data);
}).should.not.throwAnyException;

immutable range containOnly

immutable(int)[] data = [1, 2, 3];
data.map!"a".should.containOnly([2, 1, 3]);
data.map!"a".should.containOnly(data);
[1, 2, 3].should.containOnly(data);

({
  data.map!"a * 4".should.not.containOnly(data);
}).should.not.throwAnyException;

array contain

({
  [1, 2, 3].should.contain([2, 1]);
  [1, 2, 3].should.not.contain([4, 5, 6, 7]);

  [1, 2, 3].should.contain(1);
}).should.not.throwException!TestException;

auto msg = ({
  [1, 2, 3].should.contain([4, 5]);
}).should.throwException!TestException.msg.split('\n');

msg[0].should.equal("[1, 2, 3] should contain [4, 5]. [4, 5] are missing from [1, 2, 3].");

msg = ({
  [1, 2, 3].should.not.contain([2, 3]);
}).should.throwException!TestException.msg.split('\n');

msg[0].should.equal("[1, 2, 3] should not contain [2, 3]. [2, 3] are present in [1, 2, 3].");

msg = ({
  [1, 2, 3].should.not.contain([4, 3]);
}).should.throwException!TestException.msg.split('\n');

msg[0].should.equal("[1, 2, 3] should not contain [4, 3]. 3 is present in [1, 2, 3].");

msg = ({
  [1, 2, 3].should.contain(4);
}).should.throwException!TestException.msg.split('\n');

msg[0].should.equal("[1, 2, 3] should contain 4. 4 is missing from [1, 2, 3].");

msg = ({
  [1, 2, 3].should.not.contain(2);
}).should.throwException!TestException.msg.split('\n');

msg[0].should.equal("[1, 2, 3] should not contain 2. 2 is present in [1, 2, 3].");

array equals

({
  [1, 2, 3].should.equal([1, 2, 3]);
}).should.not.throwAnyException;

({
  [1, 2, 3].should.not.equal([2, 1, 3]);
  [1, 2, 3].should.not.equal([2, 3]);
  [2, 3].should.not.equal([1, 2, 3]);
}).should.not.throwAnyException;

auto msg = ({
  [1, 2, 3].should.equal([4, 5]);
}).should.throwException!TestException.msg.split("\n");

msg[0].strip.should.equal("[1, 2, 3] should equal [4, 5].");

msg = ({
  [1, 2].should.equal([4, 5]);
}).should.throwException!TestException.msg.split("\n");

msg[0].strip.should.equal("[1, 2] should equal [4, 5].");

msg = ({
  [1, 2, 3].should.equal([2, 3, 1]);
}).should.throwException!TestException.msg.split("\n");

msg[0].strip.should.equal("[1, 2, 3] should equal [2, 3, 1].");

msg = ({
  [1, 2, 3].should.not.equal([1, 2, 3]);
}).should.throwException!TestException.msg.split("\n");

msg[0].strip.should.startWith("[1, 2, 3] should not equal [1, 2, 3]");

array equals with structs

struct TestStruct {
  int value;

  void f() {}
}

({
  [TestStruct(1)].should.equal([TestStruct(1)]);
}).should.not.throwAnyException;

auto msg = ({
  [TestStruct(2)].should.equal([TestStruct(1)]);
}).should.throwException!TestException.msg;

msg.should.startWith("[TestStruct(2)] should equal [TestStruct(1)].");

const array equal

const(string)[] constValue = ["test", "string"];
immutable(string)[] immutableValue = ["test", "string"];

constValue.should.equal(["test", "string"]);
immutableValue.should.equal(["test", "string"]);

["test", "string"].should.equal(constValue);
["test", "string"].should.equal(immutableValue);

Meta