void FixtureTests::getColorStreamNullBrightnessModelTest()
{
    // Don't expect usable data, but at least don't crash.

    Fixture fixture;
    fixture.setLocations(QList<QPoint>({{1,1}}));

    QList<QColor> colorStream = fixture.getColorStream(QImage());

    QCOMPARE(colorStream.count(), 0);
}
void FixtureTests::getColorStreamNullFrameTest()
{
    // A null frame is equivalent to being out of bounds, so
    // we expect blank data back.

    Fixture fixture;
    fixture.setLocations(QList<QPoint>({{1,1}}));
    fixture.setBrightnessModel(new ExponentialBrightness(1,1,1));

    QList<QColor> colorStream = fixture.getColorStream(QImage());

    QCOMPARE(colorStream.count(), 1);
    QCOMPARE(colorStream.at(0), QColor(0,0,0,255));
}
void FixtureTests::getColorStreamBrightnessModelAppliedTest()
{
    QImage image(1,1,QImage::Format_ARGB32_Premultiplied);
    image.fill(QColor(128,128,128,255));

    QList<QPoint> locations;
    locations.append(QPoint(0,0));  // In bounds

    Fixture fixture;
    fixture.setLocations(locations);
    fixture.setBrightnessModel(new ExponentialBrightness(1,2,3));

    QList<QColor> colorStream = fixture.getColorStream(image);

    QCOMPARE(colorStream.count(), 1);
    QCOMPARE(colorStream.at(0), QColor(128,64,32,255));
}
void FixtureTests::getColorStreamBadLocationsTest()
{
    QImage image(2,2,QImage::Format_ARGB32_Premultiplied);
    image.fill(QColor(1,2,3,255));

    QList<QPoint> locations;
    locations.append(QPoint(-1,0)); // Negative out of bounds
    locations.append(QPoint(0,0));  // In bounds
    locations.append(QPoint(1,1));  // In bounds
    locations.append(QPoint(2,2));  // Positive out of bounds

    Fixture fixture;
    fixture.setLocations(locations);
    fixture.setBrightnessModel(new ExponentialBrightness(1,1,1));

    QList<QColor> colorStream = fixture.getColorStream(image);

    QCOMPARE(colorStream.count(), 4);
    QCOMPARE(colorStream.at(0), QColor(0,0,0,255));
    QCOMPARE(colorStream.at(1), QColor(1,2,3,255));
    QCOMPARE(colorStream.at(2), QColor(1,2,3,255));
    QCOMPARE(colorStream.at(3), QColor(0,0,0,255));
}