Mercurial > hg > orthanc
diff UnitTests/Png.cpp @ 455:238a0c99ced2
PNG reader
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 04 Jul 2013 15:25:15 +0200 |
parents | 6f47a4262618 |
children |
line wrap: on
line diff
--- a/UnitTests/Png.cpp Thu Jul 04 15:18:33 2013 +0200 +++ b/UnitTests/Png.cpp Thu Jul 04 15:25:15 2013 +0200 @@ -1,6 +1,7 @@ #include "gtest/gtest.h" #include <stdint.h> +#include "../Core/FileFormats/PngReader.h" #include "../Core/FileFormats/PngWriter.h" TEST(PngWriter, ColorPattern) @@ -66,3 +67,43 @@ w.WriteToFile("Gray16Pattern.png", width, height, pitch, Orthanc::PixelFormat_Grayscale16, &image[0]); } + +TEST(PngWriter, EndToEnd) +{ + Orthanc::PngWriter w; + int width = 256; + int height = 256; + int pitch = width * 2 + 16; + + std::vector<uint8_t> image(height * pitch); + + int v = 0; + for (int y = 0; y < height; y++) + { + uint16_t *p = reinterpret_cast<uint16_t*>(&image[0] + y * pitch); + for (int x = 0; x < width; x++, p++, v++) + { + *p = v; + } + } + + std::string s; + w.WriteToMemory(s, width, height, pitch, Orthanc::PixelFormat_Grayscale16, &image[0]); + + Orthanc::PngReader r; + r.ReadFromMemory(s); + + ASSERT_EQ(r.GetWidth(), width); + ASSERT_EQ(r.GetHeight(), height); + + v = 0; + for (int y = 0; y < height; y++) + { + uint16_t *p = reinterpret_cast<uint16_t*>((uint8_t*) r.GetBuffer() + y * r.GetPitch()); + for (int x = 0; x < width; x++, p++, v++) + { + ASSERT_EQ(*p, v); + } + } + +}