/*---------------------------------------------------------------------------* Project: Revolution ENC sample demo File: validate.c Copyright 2006 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Log: validate.c,v $ Revision 1.2 2006/11/14 08:34:26 yoshioka_yasuhiro Modified the buffer. Revision 1.1 2006/10/27 12:20:37 yoshioka_yasuhiro Initial commit. $NoKeywords: $ *---------------------------------------------------------------------------*/ #include #include #include "validate.h" BOOL ValidateFuncToUnicode(ConvertToUnicode func, const u16 *wcs, const u8 *mbs, s32 count) { s32 dstlen; s32 srclen = -1; ENCResult result = (*func)(NULL, &dstlen, mbs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { u16 dst[LENGTH]; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); result = (*func)(dst, &dstlen, mbs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { s32 i, j; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); for (i = 0; i < dstlen; ++i) { if (dst[i] == wcs[i]) continue; OSReport("FAILURE\nend @ %d\n", i); OSReport("result\tanswer\n"); for (j = 0; j < count; ++j) OSReport("%#x\t%#x\n", dst[i + j], wcs[i + j]); return FALSE; } OSReport("SUCCESS\nend @ %d\n", i - 1); return TRUE; } } } BOOL ValidateFuncFromUnicode(ConvertFromUnicode func, const u8 *mbs, const u16 *wcs, s32 count) { s32 dstlen; s32 srclen = -1; ENCResult result = (*func)(NULL, &dstlen, wcs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { u8 dst[LENGTH]; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); result = (*func)(dst, &dstlen, wcs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { s32 i, j; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); for (i = 0; i < dstlen; ++i) { if (dst[i] == mbs[i]) continue; OSReport("FAILURE\nend @ %d\n", i); OSReport("result\tanswer\n"); for (j = 0; j < count; ++j) OSReport("%#x\t%#x\n", dst[i + j], mbs[i + j]); return FALSE; } OSReport("SUCCESS\nend @ %d\n", i - 1); return TRUE; } } } BOOL ValidateFuncMultiByte(ConvertMultiByte func, const u8 *dstmbs, const u8 *srcmbs, s32 count) { s32 dstlen; s32 srclen = -1; ENCResult result = (*func)(NULL, &dstlen, srcmbs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { u8 dst[LENGTH]; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); result = (*func)(dst, &dstlen, srcmbs, &srclen); if (result != ENC_OK) { OSReport("ERROR: %d\n", result); OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); return FALSE; } else { s32 i, j; OSReport("dstlen: %d, srclen: %d\n", dstlen, srclen); for (i = 0; i < dstlen; ++i) { if (dst[i] == dstmbs[i]) continue; OSReport("FAILURE\nend @ %d\n", i); OSReport("result\tanswer\n"); for (j = 0; j < count; ++j) OSReport("%#x\t%#x\n", dst[i + j], dstmbs[i + j]); return FALSE; } OSReport("SUCCESS\nend @ %d\n", i - 1); return TRUE; } } }