Home | History | Annotate | Download | only in intltest
      1 /*
      2 **********************************************************************
      3 *   Copyright (C) 2001-2009, International Business Machines
      4 *   Corporation and others.  All Rights Reserved.
      5 **********************************************************************
      6 *   Date        Name        Description
      7 *   05/23/00    aliu        Creation.
      8 **********************************************************************
      9 */
     10 
     11 #include "unicode/unistr.h"
     12 #include "testutil.h"
     13 
     14 static const UChar HEX[16]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70};
     15 
     16 UnicodeString &TestUtility::appendHex(UnicodeString &buf, UChar32 ch) {
     17     if (ch >= 0x10000) {
     18         if (ch >= 0x100000) {
     19             buf.append(HEX[0xF&(ch>>20)]);
     20         }
     21         buf.append(HEX[0xF&(ch>>16)]);
     22     }
     23     buf.append(HEX[0xF&(ch>>12)]);
     24     buf.append(HEX[0xF&(ch>>8)]);
     25     buf.append(HEX[0xF&(ch>>4)]);
     26     buf.append(HEX[0xF&ch]);
     27     return buf;
     28 }
     29 
     30 UnicodeString TestUtility::hex(UChar32 ch) {
     31     UnicodeString buf;
     32     appendHex(buf, ch);
     33     return buf;
     34 }
     35 
     36 UnicodeString TestUtility::hex(const UnicodeString& s) {
     37     return hex(s, 44 /*,*/);
     38 }
     39 
     40 UnicodeString TestUtility::hex(const UnicodeString& s, UChar sep) {
     41     UnicodeString result;
     42     if (s.isEmpty()) return result;
     43     UChar32 c;
     44     for (int32_t i = 0; i < s.length(); i += U16_LENGTH(c)) {
     45         c = s.char32At(i);
     46         if (i > 0) {
     47             result.append(sep);
     48         }
     49         appendHex(result, c);
     50     }
     51     return result;
     52 }
     53 
     54 UnicodeString TestUtility::hex(const uint8_t* bytes, int32_t len) {
     55 	UnicodeString buf;
     56 	for (int32_t i = 0; i < len; ++i) {
     57 		buf.append(HEX[0x0F & (bytes[i] >> 4)]);
     58 		buf.append(HEX[0x0F & bytes[i]]);
     59 	}
     60 	return buf;
     61 }
     62