public static void main(String[] args)
            throws Exception
    {
        File uniDir   = new File(args[args.length - 7]);
        File triDir   = new File(args[args.length - 6]);
        File s1Uni    = new File(args[args.length - 5]);
        File s1Tri    = new File(args[args.length - 4]);
        File s2Uni    = new File(args[args.length - 3]);
        File s2Tri    = new File(args[args.length - 2]);
        File pairFile = new File(args[args.length - 1]);

        System.out.println("================================== Test start ==================================");
        System.out.println();
        System.out.println("Arguments:");
        System.out.println("\tRaw Unigram directory: " + uniDir.getPath());
        System.out.println("\tRaw Trigram directory: " + triDir.getPath());
        System.out.println("\tStage1 Unigram :       " + s1Uni.getPath());
        System.out.println("\tStage1 Trigram :       " + s1Tri.getPath());
        System.out.println("\tStage2 Unigram :       " + s2Uni.getPath());
        System.out.println("\tStage2 Trigram :       " + s2Tri.getPath());
        System.out.println("\tPair file:             " + pairFile.getPath());
        System.out.println();
        if (TEST_STAGE1) {
            System.out.println("Stage 1 Approaches:");
            for (Class<? extends gtm.test.stage1.Approach> app : STAGE1_APPROACHES)
                System.out.println('\t' + app.getSimpleName());
        }
        System.out.println();

        // Test two stages.
        if (TEST_STAGE1)
            testStage1(uniDir, triDir, s1Uni, s1Tri, pairFile);
        if (TEST_STAGE2)
            testStage2(s2Uni, s2Tri, pairFile);

        System.out.println("=================================== Test end ===================================");
    }