Esempio n. 1
0
int keyspace_client_test()
{
	//TEST_CALL(keyspace_client_basic_test());
	TEST_CALL(test_invalid_result());
	TEST_CALL(test_init());
	TEST_CALL(test_invalid_init_memleak());
	TEST_CALL(test_badconnect());
	
	return TEST_SUCCESS;
}
Esempio n. 2
0
void test_plus_float_4() 
{
	// matrix
	Array<float> m1( sizeLarge, sizeLarge );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m1(i,j) = -1.0;
	}

	Array<float> m2( sizeLarge, sizeLarge );
	for (int i = 0; i < m2.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m2.GetDescriptor().GetDim( 1 ); j++)
			m2(i,j) = 1.0;
	}
	
	Array<float> m3( sizeLarge, sizeLarge );
	for (int i = 0; i < m3.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m3.GetDescriptor().GetDim( 1 ); j++)
			m3(i,j) = 5.0;
	}
	
	Array<float> m4( sizeLarge, sizeLarge );

	m3 = m1 + m2;
	
	TEST_CALL( m3, m4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 3
0
void test_plus_complex_5()
{
	// matrix
	Array<Complex> m1( sizeLarge, sizeLarge );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m1(i,j) = Complex(-1,-1);
	}
	
	Array<Complex> m2( sizeLarge, sizeLarge );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m2(i,j) = Complex(1,1);
	}
	
	Array<Complex> m3( sizeLarge, sizeLarge );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m3(i,j) = Complex(5,5);
	}
	
	Array<Complex> m4( sizeLarge, sizeLarge );

	m3 = m1 + m2;
	
	TEST_CALL( m3, m4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 4
0
void test_plus_complex_3()
{	
	Array<Complex> m1( sizeSmall, sizeSmall );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m1(i,j) = Complex(-1,-1);
	}

	std::complex <double> a = 1;

	Array<Complex> m2( sizeSmall, sizeSmall );
	for (int i = 0; i < m2.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m2.GetDescriptor().GetDim( 1 ); j++)
			m2(i,j) = Complex(1,1);
	}
	
	Array<Complex> m3( sizeSmall, sizeSmall );
	for (int i = 0; i < m3.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m3.GetDescriptor().GetDim( 1 ); j++)
			m3(i,j) = Complex(5,5);
	}
	
	Array<Complex> m4( sizeSmall, sizeSmall );

	m3 = m1 + m2;
	
	TEST_CALL( m3, m4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 5
0
void test_determinant_complex_5x5_1()
{
	Array<Complex> m( 5, 5 );
	m(0,0) = Complex(    7.20062084171543270000e-01,    1.34233246597730590000e+00);
	m(0,1) = Complex(    8.60555690148311130000e-01,    3.92421335311681220000e-02);
	m(0,2) = Complex(    2.18668479048691470000e-01,    1.72773644586722130000e+00);
	m(0,3) = Complex(    4.57375168040441650000e-01,    2.86312044167152280000e-01);
	m(0,4) = Complex(    1.33808518016311080000e+00,    1.83364254050747610000e+00);
	m(1,0) = Complex(    9.08424743706797160000e-01,    1.19917109624562770000e+00);
	m(1,1) = Complex(    1.38750514826782690000e+00,    8.70351091393903650000e-01);
	m(1,2) = Complex(    7.79861314312970010000e-01,    1.95395836322886260000e-01);
	m(1,3) = Complex(    1.66837812211379900000e+00,    1.11874114480600780000e+00);
	m(1,4) = Complex(    1.00042264856220480000e+00,    1.97393654956731620000e+00);
	m(2,0) = Complex(    7.72779797184344640000e-01,    1.11952314775580990000e-01);
	m(2,1) = Complex(    1.89042697433692060000e+00,    1.66444295056563530000e+00);
	m(2,2) = Complex(    1.18180946081067280000e+00,    1.81610440637353830000e+00);
	m(2,3) = Complex(    3.12893853930540370000e-02,    9.15924789464694910000e-03);
	m(2,4) = Complex(    4.35987597500307130000e-01,    1.01026620359764510000e+00);
	m(3,0) = Complex(    1.55110928450107100000e+00,    1.12686037086713540000e-01);
	m(3,1) = Complex(    1.56846519646348170000e+00,    1.23478034290816850000e+00);
	m(3,2) = Complex(    9.18760095932650730000e-01,    2.16033388273517920000e-01);
	m(3,3) = Complex(    1.72742173011173140000e+00,    1.53336399724297490000e+00);
	m(3,4) = Complex(    1.14323145080817820000e+00,    5.42843248835030100000e-01);
	m(4,0) = Complex(    1.46854221137187870000e+00,    3.05001274004940590000e-01);
	m(4,1) = Complex(    1.41114371626213760000e+00,    1.04025883062148390000e+00);
	m(4,2) = Complex(    1.00679973477908250000e-01,    1.03399351619388980000e+00);
	m(4,3) = Complex(    1.56138106064868550000e-01,    1.69741845291656480000e+00);
	m(4,4) = Complex(    2.44378301846839510000e-01,    2.01501023842471260000e-01);

	Complex control = Complex(   -1.00028861738829940000e+01,    9.93608334223188020000e+00);

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 6
0
void test_plus_double_5()
{
	// matrix
	Array<double> m1( sizeLarge, sizeLarge );
	for (double i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (double j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m1(i,j) = -1;
	}

	Array<double> m2( sizeLarge, sizeLarge );
	for (double i = 0; i < m2.GetDescriptor().GetDim( 0 ); i++) {
		for (double j = 0; j < m2.GetDescriptor().GetDim( 1 ); j++)
			m2(i,j) = 1;
	}
	
	Array<double> m3( sizeLarge, sizeLarge );
	for (double i = 0; i < m3.GetDescriptor().GetDim( 0 ); i++) {
		for (double j = 0; j < m3.GetDescriptor().GetDim( 1 ); j++)
			m3(i,j) = 5;
	}
	
	Array<double> m4( sizeLarge, sizeLarge );

	m3 = m1 + m2;
	
	TEST_CALL( m3, m4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 7
0
void test_plus_double_3() 
{
	Array<double> m1( sizeSmall, sizeSmall );
	for (int i = 0; i < m1.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m1.GetDescriptor().GetDim( 1 ); j++)
			m1(i,j) = -1.0;
	}

	Array<double> m2( sizeSmall, sizeSmall );
	for (int i = 0; i < m2.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m2.GetDescriptor().GetDim( 1 ); j++)
			m2(i,j) = 1.0;
	}
	
	Array<double> m3( sizeSmall, sizeSmall );
	for (int i = 0; i < m3.GetDescriptor().GetDim( 0 ); i++) {
		for (int j = 0; j < m3.GetDescriptor().GetDim( 1 ); j++)
			m3(i,j) = 5.0;
	}
	
	Array<double> m4( sizeSmall, sizeSmall );

	m3 = m1 + m2;
	
	TEST_CALL( m3, m4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 8
0
void test_determinant_complex_4x4_1()
{
	Array<Complex> m( 4, 4 );
	m( 0, 0 ) = Complex( 1, 1 );
	m( 0, 1 ) = Complex( 1, 0 );
	m( 0, 2 ) = Complex( 0, 1 );
	m( 0, 3 ) = Complex( 0, 1 );
	m( 1, 0 ) = Complex( 2, 2 );
	m( 1, 1 ) = Complex( 1, 0 );
	m( 1, 2 ) = Complex( 2, -2 );
	m( 1, 3 ) = Complex( 0, 1 );
	m( 2, 0 ) = Complex( 3, 0 );
	m( 2, 1 ) = Complex( 1, 0 );
	m( 2, 2 ) = Complex( 0, 4 );
	m( 2, 3 ) = Complex( 0, 1 );
	m( 3, 0 ) = Complex( 3, 0 );
	m( 3, 1 ) = Complex( 1, 1 );
	m( 3, 2 ) = Complex( 0, 4 );
	m( 3, 3 ) = Complex( 0, 2 );

	Complex det = m.determinant();
	Complex control = Complex( 15, -7);

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 9
0
void test_determinant_float_20x20_1()
{
	Array<float> data = read_file_matrix<float>( std::string("unit_tests_files//test_determinant_float_20x20_1//data.txt") );
	
	float control = 9.974225382144941e+03;

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 10
0
void test_determinant_float_100x100_1()
{
	Array<float> data = read_file_matrix<float>( std::string("unit_tests_files//test_determinant_float_100x100_1//data.txt") );
	
	float control = 2.094843919208893e+03;

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 11
0
// m.det() = 0
void test_determinant_complex_3x3_2()
{
	Array<Complex> data = read_file_matrix<Complex>( std::string("unit_tests_files//test_determinant_complex_3x3_1//data.txt") );
	
	Complex control = Complex(  -2.465963761762253e-15, 7.725952660079466e-16 );

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 12
0
void test_determinant_double_100x100_1()
{
	Array<double> data = read_file_matrix<double>( std::string("unit_tests_files//test_determinant_double_100x100_1//data.txt") );
	
	double control = 3.899089460444517e+02;

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 13
0
// m.det() = 0
void test_determinant_complex_20x20_2()
{
	Array<Complex> data = read_file_matrix<Complex>( std::string("unit_tests_files//test_determinant_complex_20x20_2//data.txt") );
	
	Complex control = 0;

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 14
0
void test_determinant_complex_100x100_1()
{
	Array<Complex> data = read_file_matrix<Complex>( std::string("unit_tests_files//test_determinant_complex_100x100_1//data.txt") );
	
	Complex control = Complex( -2.2809e-04, 2.5320e-04 );

	TEST_CALL( abs(data.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 15
0
void test_determinant_complex_1x1_1()
{
	Array<Complex> m( 1, 1 );
	m( 0, 0 ) = Complex( 1, 1 );
	Complex control = Complex( 1, 1 );

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 16
0
void test_determinant_float_1x1_1() 
{
	Array<float> m( 1, 1 );
	float control = 1;
	m( 0, 0 ) = 1;

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 17
0
// m.det() = 0
void test_determinant_double_1x1_2() 
{
	Array<double> m( 1, 1 );
	m( 0, 0 ) = 0;
	
	double control = 0;

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 18
0
void test_determinant_double_2x2_1()
{
	Array<double> m( 2, 2 );
	m( 0, 0 ) = 1;
	m( 0, 1 ) = 0;
	m( 1, 0 ) = 0;
	m( 1, 1 ) = 1;
	
	double control = 1;

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 19
0
void test_determinant_float_2x2_3()
{
	Array<float> m( 2, 2 );
	m( 0, 0 ) = 1;
	m( 0, 1 ) = 2;
	m( 1, 0 ) = 3;
	m( 1, 1 ) = 4;

	float control = 2;

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 20
0
// m.det() = 0
void test_determinant_complex_2x2_2()
{
	Array<Complex> m( 2, 2 );
	m( 0, 0 ) = Complex( 1, 1 );
	m( 0, 1 ) = Complex( 1, 0 );
	m( 1, 0 ) = Complex( 2, 2 );
	m( 1, 1 ) = Complex( 2, 0 );
	
	Complex det = m.determinant();
	Complex control = Complex( 0, 0);

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 21
0
// m.det() = 0
void test_determinant_float_3x3_2()
{
	Array<float> m( 3, 3 );
	m( 0, 0 ) = 1;
	m( 0, 1 ) = 1;
	m( 0, 2 ) = 1;
	m( 1, 0 ) = 1;
	m( 1, 1 ) = 1;
	m( 1, 2 ) = 1;
	m( 2, 0 ) = 1;
	m( 2, 1 ) = 1;
	m( 2, 2 ) = 1;

	float control = 0;

	TEST_CALL( abs(m.determinant()), abs(control), BOOST_CURRENT_FUNCTION );
}
Esempio n. 22
0
void test_plus_double_2()
{
	// large vector
	Array<double> v1( sizeLarge );
	for (int i = 0; i < v1.GetDescriptor().GetDim( 0 ); i++)
		v1(i) = -1;

	Array<double> v2( sizeLarge );
	for (int i = 0; i < v2.GetDescriptor().GetDim( 0 ); i++)
		v2(i) = 1;
	
	Array<double> v3( sizeLarge );
	for (int i = 0; i < v3.GetDescriptor().GetDim( 0 ); i++)
		v3(i) = 5;
	
	Array<double> v4( sizeLarge );

	v3 = v1 + v2;
	
	TEST_CALL( v3, v4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 23
0
void test_plus_complex_2()
{
	// large vector
	Array<Complex> v1( sizeLarge );
	for (int i = 0; i < v1.GetDescriptor().GetDim( 0 ); i++)
		v1(i) = Complex(-1,-1);

	Array<Complex> v2( sizeLarge );
	for (int i = 0; i < v2.GetDescriptor().GetDim( 0 ); i++)
		v2(i) = Complex(1,1);
	
	Array<Complex> v3( sizeLarge );
	for (int i = 0; i < v3.GetDescriptor().GetDim( 0 ); i++)
		v3(i) = Complex(5,5);
	
	Array<Complex> v4( sizeLarge );

	v3 = v1 + v2;
	
	TEST_CALL( v3, v4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 24
0
void test_plus_float_1()
{
	// small vector
	Array<float> v1( sizeSmall );
	for (int i = 0; i < v1.GetDescriptor().GetDim( 0 ); i++)
		v1(i) = -1;

	Array<float> v2( sizeSmall );
	for (int i = 0; i < v2.GetDescriptor().GetDim( 0 ); i++)
		v2(i) = 1;
	
	Array<float> v3( sizeSmall );
	for (int i = 0; i < v3.GetDescriptor().GetDim( 0 ); i++)
		v3(i) = 5;
	
	Array<float> v4( sizeSmall );
	
	v3 = v1 + v2;
	
	TEST_CALL( v3, v4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 25
0
// m.det() = 0
void test_determinant_complex_4x4_2()
{
	Array<Complex> m( 4, 4 );
	m( 0, 0 ) = Complex( 1, 1 );
	m( 0, 1 ) = Complex( 1, 0 );
	m( 0, 2 ) = Complex( 0, 1 );
	m( 0, 3 ) = Complex( 0, 1 );
	m( 1, 0 ) = Complex( 2, 2 );
	m( 1, 1 ) = Complex( 1, 0 );
	m( 1, 2 ) = Complex( 2, -2 );
	m( 1, 3 ) = Complex( 0, 1 );
	m( 2, 0 ) = Complex( 3, 0 );
	m( 2, 1 ) = Complex( 1, 0 );
	m( 2, 2 ) = Complex( 0, 4 );
	m( 2, 3 ) = Complex( 0, 1 );
	m( 3, 0 ) = Complex( 3, 0 );
	m( 3, 1 ) = Complex( 1, 0 );
	m( 3, 2 ) = Complex( 0, 4 );
	m( 3, 3 ) = Complex( 0, 1 );

	TEST_CALL( m.determinant(), Complex( 0, 0), BOOST_CURRENT_FUNCTION );
}
Esempio n. 26
0
// any operation before init must fall
static int test_init()
{
	keyspace_client_t	kc;
	keyspace_result_t	kr;
	int					status;
	
	kc = keyspace_client_create();
	
	status = keyspace_client_submit(kc);
	if (status == KEYSPACE_SUCCESS)
		return TEST_FAILURE;
	
	status = keyspace_client_begin(kc);
	if (status == KEYSPACE_SUCCESS)
		return TEST_FAILURE;
	
	status = keyspace_client_cancel(kc);
	if (status == KEYSPACE_SUCCESS)
		return TEST_FAILURE;

	kr = keyspace_client_result(kc);
	if (kr != KEYSPACE_INVALID_RESULT)
		return TEST_FAILURE;

	TEST_CALL(test_init_with_commands(kc));

	// test init with invalid arguments
	status = keyspace_client_init(kc, 0, NULL);
	if (status == KEYSPACE_SUCCESS)
		return TEST_FAILURE;
	
	status = keyspace_client_init(kc, sizeof(NODES) / sizeof(*NODES), NODES);
	if (status != KEYSPACE_SUCCESS)
		return TEST_FAILURE;
	
	keyspace_client_destroy(kc);
	
	return TEST_SUCCESS;
}
Esempio n. 27
0
void test_plus_complex_1()
{
	// small vector
	Array<Complex> v1( sizeSmall );
	for (int i = 0; i < v1.GetDescriptor().GetDim( 0 ); i++)
		v1(i) = Complex(-1,-1);

	Array<Complex> v2( sizeSmall );
	for (int i = 0; i < v2.GetDescriptor().GetDim( 0 ); i++)
		v2(i) = Complex(-1,-1);
	
	Array<Complex> v3( sizeSmall );
	for (int i = 0; i < v3.GetDescriptor().GetDim( 0 ); i++)
		v3(i) = Complex(5,5);
	
	Array<Complex> v4( sizeSmall );
	for (int i = 0; i < v4.GetDescriptor().GetDim( 0 ); i++)
		v4(i) = Complex(-2,-2);
	
	v3 = v1 + v2;
	
	TEST_CALL( v3, v4, BOOST_CURRENT_FUNCTION );
}
Esempio n. 28
0
void TEST_ROUTE(){
	TEST_CALL("foobar", testFoobar);
}
Esempio n. 29
0
void TEST_ROUTE(){
	route_add("ping", method_ping);
	route_add("sum", method_sum);
	route_add("unkown_error", method_unknown_error);
	route_add("error_msg", method_error_msg);
	
	// check all possible error
	TEST_CALL("invalid json", testInvalidJSON);
	TEST_CALL("invalid request not object/array", testInvalidRequest);
	TEST_CALL("invalid request (id)", testInvalidRequestId);
	TEST_CALL("invalid request (method, version)", testInvalidRequestElse);
	TEST_CALL("not insert params", testInvalidParams);
	TEST_CALL("not found", testNotFound);
	TEST_CALL("unknown error", testUnknownError);
	TEST_CALL("error message", testErrorMessage);
	
	// ping
	TEST_CALL("test ping", testPing);
	
	// sum
	TEST_CALL("test sum", testSum);
	
	// batch
	TEST_CALL("test batch request", testBatch);
	TEST_CALL("test batch invalid one", testBatchInvalidOne);
}
Esempio n. 30
0
int main() {
  // Create URL
  rusturl_ptr url = rusturl_new("http://example.com/path/some/file.txt",
                                strlen("http://example.com/path/some/file.txt"));
  assert(url); // Check we have a URL

  StringContainer container;

  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://example.com/path/some/file.txt");
  TEST_CALL(rusturl_set_host(url, "test.com", strlen("test.com")), 0);
  TEST_CALL(rusturl_get_host(url, &container), 0);
  container.CheckEquals("test.com");
  TEST_CALL(rusturl_get_path(url, &container), 0);
  container.CheckEquals("/path/some/file.txt");
  TEST_CALL(rusturl_set_path(url, "hello/../else.txt", strlen("hello/../else.txt")), 0);
  TEST_CALL(rusturl_get_path(url, &container), 0);
  container.CheckEquals("/else.txt");
  TEST_CALL(rusturl_resolve(url, "./bla/file.txt", strlen("./bla/file.txt"), &container), 0);
  container.CheckEquals("http://test.com/bla/file.txt");
  TEST_CALL(rusturl_get_scheme(url, &container), 0);
  container.CheckEquals("http");
  TEST_CALL(rusturl_set_username(url, "user", strlen("user")), 0);
  TEST_CALL(rusturl_get_username(url, &container), 0);
  container.CheckEquals("user");
  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://[email protected]/else.txt");
  TEST_CALL(rusturl_set_password(url, "pass", strlen("pass")), 0);
  TEST_CALL(rusturl_get_password(url, &container), 0);
  container.CheckEquals("pass");
  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://*****:*****@test.com/else.txt");
  TEST_CALL(rusturl_set_username(url, "", strlen("")), 0);
  TEST_CALL(rusturl_set_password(url, "", strlen("")), 0);
  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://test.com/else.txt");
  TEST_CALL(rusturl_set_host_and_port(url, "example.org:1234", strlen("example.org:1234")), 0);
  TEST_CALL(rusturl_get_host(url, &container), 0);
  container.CheckEquals("example.org");
  assert(rusturl_get_port(url) == 1234);
  TEST_CALL(rusturl_set_port(url, "9090", strlen("9090")), 0);
  assert(rusturl_get_port(url) == 9090);
  TEST_CALL(rusturl_set_query(url, "x=1", strlen("x=1")), 0);
  TEST_CALL(rusturl_get_query(url, &container), 0);
  container.CheckEquals("x=1");
  TEST_CALL(rusturl_set_fragment(url, "fragment", strlen("fragment")), 0);
  TEST_CALL(rusturl_get_fragment(url, &container), 0);
  container.CheckEquals("fragment");
  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://example.org:9090/else.txt?x=1#fragment");

  // Free the URL
  rusturl_free(url);

  url = rusturl_new("http://example.com/#",
                                strlen("http://example.com/#"));
  assert(url); // Check we have a URL

  assert(rusturl_has_fragment(url) == 1);
  TEST_CALL(rusturl_set_fragment(url, "", 0), 0);
  assert(rusturl_has_fragment(url) == 0);
  TEST_CALL(rusturl_get_spec(url, &container), 0);
  container.CheckEquals("http://example.com/");

  rusturl_free(url);

  printf("SUCCESS\n");
  return 0;
}