dub test

Atila Neves via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 30 07:40:13 PDT 2016


On Wednesday, 24 August 2016 at 12:00:32 UTC, Andrei Alexandrescu 
wrote:
> On 08/24/2016 04:14 AM, Edwin van Leeuwen wrote:
>> I might be dense, but the only other thing than integration 
>> tests that I
>> can think of is if you use random data for testing, but that 
>> would be
>> more correctly solved by using more random data during the 
>> unittests.
>> Nothing is worse than tests that only sometimes fail.
>
> Randomized unit testing is a respected approach to testing: 
> https://hackage.haskell.org/package/QuickCheck, 
> https://github.com/rickynils/scalacheck, 
> https://blogs.msdn.microsoft.com/dsyme/2008/08/08/fscheck-0-2/, 
> etc. Some of the Phobos tests I wrote use it (and virtually all 
> of my current code e.g. on median computation), and when they 
> fail I just print the seed of the RNG and then hardcode it to 
> reproduce the test. -- Andrei

unit-threaded has had QuickCheck-like property-based testing 
features for a while now. As mentioned previously in the forum, I 
wrote this test in cerealed:


@Types!(bool, byte, ubyte, short, ushort, int, uint, long, ulong,
         float, double,
         char, wchar, dchar,
         ubyte[], ushort[], int[], long[], float[], double[])
void testEncodeDecodeProperty(T)() {
     check!((T val) {
         auto enc = Cerealiser();
         enc ~= val;
         auto dec = Decerealiser(enc.bytes);
         return dec.value!T == val;
     });
}


Checks that for every type in the list that given a random value 
of that type, serialising then deserialising should yield the 
same value back.


Atila



More information about the Digitalmars-d mailing list