/*
 * Class:     com_yeguang_paramprotocol_ParamSocket
 * Method:    CallFunction
 * Signature: (Ljava/lang/String;Lcom/yeguang/paramprotocol/ParamArgs;)V
 */
JNIEXPORT void JNICALL Java_com_yeguang_paramprotocol_ParamSocket_CallFunction
  (JNIEnv *env, jobject obj, jstring funname, jobject args)
{
	yeguang::ParamSocket *sock = GetSocket(env, obj);

	if (sock == NULL)
	{
		return;
	}

	char *name = jstringTostring(env, funname);
	std::string strname = name;
	free(name);

	int count = GetArgsCount(env, args);

	int i = 0;
	yeguang::ParamArgs params;	

	dprint("-count:%d---\n", count);

	for (i = 0; i < count; i++)
	{
		yeguang::ValueObject tmpvalue;
	    if(GetArg(env, args, i, tmpvalue))
		{
			params.AddArg(tmpvalue);
		}
	}

	dprint("-CallFunction:%d---\n", count);

	sock->CallFunction(strname, params);
}
point_test_suite::point_test_suite(char** args_list, int args_count) :
        test_case()
{
    SetArgs(args_list);
    SetArgsCount(args_count);

    adopt_test_case(new default_constructor_test);
    adopt_test_case(new specific_constructor_test);
    adopt_test_case(new copy_constructor_test);
    adopt_test_case(new equality_operator_test);
    adopt_test_case(new inequality_operator_test);
    adopt_test_case(new self_addition_test);
    adopt_test_case(new self_subtraction_test);
    adopt_test_case(new addition_test);
    adopt_test_case(new subtraction_test);
    adopt_test_case(new copy_operator_test);
    adopt_test_case(new cmd_args_test(GetArgs(), GetArgsCount()));
}