RoomPlainPropertyEditorSystem::RoomPlainPropertyEditorSystem()
    : mScene( Scene::Get() )
    , mEditorPropModel( "editor_plain_prop", &RootModel::Get() )
    , mPropNamesModel( (ModelValue::get_string_vec_t) RefTo( mPropNames ), "props", &mEditorPropModel )
    , mPropSelectedModel( StringFunc( this, &RoomPlainPropertyEditorSystem::OnPropSelected ), "prop_selected", &mEditorPropModel )
    , mPropStatesModel( (ModelValue::get_string_vec_t) RefTo( mPropStates ), "prop_states", &mEditorPropModel )
{
}
TEST_F(SimpleFilterTest, applyWithDestinationImageCallsPerPixelApplyMethod) {
    using FilterType = FakeSimpleFilter<SourceImageType, DestinationImageType>;
    using MethodSignature = DestinationPixelType(unsigned int, unsigned int,
            const SourceImageType&);

    unsigned int width = 10;
    unsigned int height = 8;

    FilterType filter;
    Mock<FilterType> spy(filter);

    Spy(OverloadedMethod(spy, apply, MethodSignature));

    auto sourceImageMock = createSourceImageMock(width, height);
    const auto& sourceImage = sourceImageMock.get();
    auto destinationImage = DestinationImageType(width, height);

    filter.apply(sourceImage, destinationImage);

    for (unsigned int x = 0; x < width; ++x) {
        for (unsigned int y = 0; y < height; ++y) {
            Verify(OverloadedMethod(spy, apply, MethodSignature)
                    .Using(x, y, RefTo(sourceImage)));
        }
    }
}