enum State { Uninitialized, Running, Finish, } struct Test { Object obj; string text; int number; Duration span; bool flag; State state; } auto result = describe([ Test(null, "A", 10, 10.msecs, true, State.Uninitialized), Test(null, "A", 20, 20.msecs, true, State.Running), Test(null, "B", 30, 30.msecs, false, State.Uninitialized), Test(null, "B", 40, 40.msecs, false, State.Finish), Test(null, "B", 50, 50.msecs, true, State.Uninitialized), Test(null, "B", 60, 60.msecs, false, State.Running), ]); assert(result.text.count == 6); assert(result.text.unique == 2); assert(result.number.count == 6); assert(result.number.min == 10); assert(result.number.max == 60); assert(result.span.count == 6); assert(result.span.min == 10.msecs); assert(result.span.max == 60.msecs); assert(result.flag.count == 6); assert(result.flag.unique == 2); assert(result.flag.top == false); assert(result.flag.freq == 3); assert(result.state.count == 6); assert(result.state.top == State.Uninitialized); assert(result.state.freq == 3);