This macro should use AreFilesContentsEqual(), not AreImagesFilesContentsEqual(), used by WX_ASSERT_SAME_AS_IMAGE_FILE(). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        tests/drawing/testimagefile.h
 | |
| // Purpose:     Functions to test whether the content of files or images files
 | |
| //              are equal
 | |
| // Author:      Armel Asselin
 | |
| // Created:     2014-02-28
 | |
| // Copyright:   (c) 2014 Ellié Computing <opensource@elliecomputing.com>
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| #ifndef _WX_TESTS_TESTIMAGEFILE_H_
 | |
| #define _WX_TESTS_TESTIMAGEFILE_H_
 | |
| 
 | |
| bool AreFilesContentsEqual(const wxString &filename, const wxString &refFilename)
 | |
| {
 | |
|     wxFileInputStream input(filename);
 | |
|     wxFileInputStream refInput(refFilename);
 | |
| 
 | |
|     wxFileOffset refLength = refInput.GetLength();
 | |
|     if (refLength != input.GetLength())
 | |
|         return false;
 | |
| 
 | |
|     wxUint8 buffer[1024], refBuffer[sizeof(buffer)];
 | |
| 
 | |
|     wxFileOffset remainingLength = refLength;
 | |
|     while (remainingLength != 0)
 | |
|     {
 | |
|         input.Read (buffer, wxMin(remainingLength, sizeof(buffer)));
 | |
|         refInput.Read(refBuffer, wxMin(remainingLength, sizeof(refBuffer)));
 | |
| 
 | |
|         size_t refLastRead = refInput.LastRead();
 | |
|         if (input.LastRead() != refLastRead)
 | |
|             return false;
 | |
| 
 | |
|         if (memcmp (buffer, refBuffer, refLastRead) != 0)
 | |
|             return false;
 | |
| 
 | |
|         remainingLength -= refLastRead;
 | |
|     }
 | |
| 
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| #define WX_ASSERT_SAME_AS_FILE(filename1, filename2) \
 | |
|     WX_ASSERT_MESSAGE(\
 | |
|         ("Files \"%s\" and \"%s\" differ.",\
 | |
|             filename1, filename2),\
 | |
|         AreFilesContentsEqual(filename1, filename2))
 | |
| 
 | |
| bool AreImagesFilesContentsEqual(const wxString &filename,
 | |
|                                  const wxString &refFilename)
 | |
| {
 | |
|     wxImage input(filename);
 | |
|     wxImage refInput(refFilename);
 | |
| 
 | |
|     // assertion_traits<wxImage> could do part of the job or maybe the contrary
 | |
|     // there should probably be somethin common at least
 | |
| 
 | |
|     if (!input.Ok() || !refInput.Ok())
 | |
|         return false;
 | |
|     if (input.GetSize() != refInput.GetSize())
 | |
|         return false;
 | |
|     if (input.HasAlpha() != refInput.HasAlpha())
 | |
|         return false;
 | |
|     if (input.HasMask() != refInput.HasMask())
 | |
|         return false;
 | |
| 
 | |
|     long pixelsCount = input.GetSize().GetWidth() * input.GetSize().GetHeight();
 | |
|     const unsigned char *data = input.GetData();
 | |
|     const unsigned char *refData = refInput.GetData();
 | |
|     if (memcmp (data, refData, pixelsCount*3) != 0)
 | |
|         return false;
 | |
| 
 | |
|     if (input.HasAlpha())
 | |
|     {
 | |
|         const unsigned char *alpha = input.GetAlpha();
 | |
|         const unsigned char *refAlpha = refInput.GetAlpha();
 | |
|         if (memcmp (alpha, refAlpha, pixelsCount) != 0)
 | |
|             return false;
 | |
|     }
 | |
| 
 | |
|     if (input.HasMask() &&
 | |
|         (input.GetMaskRed() != refInput.GetMaskRed() ||
 | |
|          input.GetMaskGreen() != refInput.GetMaskGreen() ||
 | |
|          input.GetMaskBlue() != refInput.GetMaskBlue()))
 | |
|          return false;
 | |
| 
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| #define WX_ASSERT_SAME_AS_IMAGE_FILE(filename1, filename2) \
 | |
|     WX_ASSERT_MESSAGE(\
 | |
|         ("Image files \"%s\" and \"%s\" differ.",\
 | |
|             filename1, filename2),\
 | |
|         AreImagesFilesContentsEqual(filename1, filename2))
 | |
| 
 | |
| #endif // _WX_TESTS_TESTIMAGEFILE_H_
 |