TEST(BitmapReadWrite, BitmapEncoderDecoder)
{
	// Read in the bitmap

	std::ifstream bitmapStream("basic.bmp", std::ios::binary);
	CHECK(bitmapStream.is_open());

	WindowsBitmapDecoder decoder(bitmapStream);
	HBitmapIterator bitmapIter = decoder.createIterator();

	// Write out the bitmap to a different file with its write() method

	std::ofstream outputStream("outputED.bmp", std::ios::binary);
	CHECK(outputStream.is_open());

	WindowsBitmapEncoder encoder(bitmapIter);
	encoder.encodeToStream(outputStream);
	outputStream.close();

	// Read that one back in and check sizes

	std::ifstream bitmapStream2("outputED.bmp", std::ios::binary);
	CHECK(bitmapStream2.is_open());

	WindowsBitmapDecoder decoder2(bitmapStream2);
	bitmapIter = decoder2.createIterator();

	int numberOfScanLines = 0;
	while (!bitmapIter->isEndOfImage())
	{
		int numberOfPixelsInScanLine = 0;
		while (!bitmapIter->isEndOfScanLine())
		{
			++numberOfPixelsInScanLine;
			bitmapIter->nextPixel();
		}
		CHECK_EQUAL(100, numberOfPixelsInScanLine);
		++numberOfScanLines;

		bitmapIter->nextScanLine();
	}
	CHECK_EQUAL(100, numberOfScanLines);
}
TEST(BitmapScanLinesTest, BitmapIterator)
{
	std::ifstream bitmapStream("basic.bmp", std::ios::binary);
	CHECK(bitmapStream.is_open());

	WindowsBitmapDecoder decoder(bitmapStream);
	HBitmapIterator bitmapIter = decoder.createIterator();

	int numberOfScanLines = 0;
	while (!bitmapIter->isEndOfImage())
	{
		int numberOfPixelsInScanLine = 0;
		while (!bitmapIter->isEndOfScanLine())
		{
			++numberOfPixelsInScanLine;
			bitmapIter->nextPixel();
		}
		CHECK_EQUAL(100, numberOfPixelsInScanLine);
		++numberOfScanLines;

		bitmapIter->nextScanLine();
	}
	CHECK_EQUAL(100, numberOfScanLines);
}