Back to index

lightning-sunbird  0.9+nobinonly
TestIDN.cpp File Reference
#include "TestCommon.h"
#include <stdio.h>
#include "nsIIDNService.h"
#include "nsCOMPtr.h"
#include "nsIServiceManager.h"
#include "nsNetCID.h"
#include "nsString.h"

Go to the source code of this file.


int main (int argc, char **argv)
 The Xalan testcases app.

Function Documentation

int main ( int  argc,
char **  argv 

The Xalan testcases app.

Definition at line 48 of file TestIDN.cpp.

    if (test_common_init(&argc, &argv) != 0)
        return -1;

    // Test case from RFC 3492 (7.1 - Simplified Chinese)
    const char plain[] =
    const char encoded[] = "xn--ihqwcrb4cv8a8dqg056pqjye";

    nsCOMPtr<nsIIDNService> converter = do_GetService(NS_IDNSERVICE_CONTRACTID);
    NS_ASSERTION(converter, "idnSDK not installed!");
    if (converter) {
        nsCAutoString buf;
        nsresult rv = converter->ConvertUTF8toACE(NS_LITERAL_CSTRING(plain), buf);
        NS_ASSERTION(NS_SUCCEEDED(rv), "error ConvertUTF8toACE");
        NS_ASSERTION(buf.Equals(NS_LITERAL_CSTRING(encoded), nsCaseInsensitiveCStringComparator()), 
                     "encode result incorrect");
        printf("encoded = %s\n", buf.get());

        rv = converter->ConvertACEtoUTF8(NS_LITERAL_CSTRING(encoded), buf);
        NS_ASSERTION(NS_SUCCEEDED(rv), "error ConvertACEtoUTF8");
        NS_ASSERTION(buf.Equals(NS_LITERAL_CSTRING(plain), nsCaseInsensitiveCStringComparator()), 
                     "decode result incorrect");
        printf("decoded = ");
        NS_ConvertUTF8toUCS2 u(buf);
        for (int i = 0; u[i]; i++) {
          printf("U+%.4X ", u[i]);

        PRBool isAce;
        rv = converter->IsACE(NS_LITERAL_CSTRING(""), &isAce);
        NS_ASSERTION(NS_SUCCEEDED(rv), "error IsACE");
        NS_ASSERTION(isAce, "IsACE incorrect result");
    return 0;

Here is the call graph for this function: