MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / TEST_F

Function TEST_F

test/c_api/value_test.cpp:282–350  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

280}
281
282TEST_F(CApiValueTest, CreateList) {
283 auto connection = getConnection();
284 lbug_value* value1 = lbug_value_create_int64(123);
285 lbug_value* value2 = lbug_value_create_int64(456);
286 lbug_value* value3 = lbug_value_create_int64(789);
287 lbug_value* value4 = lbug_value_create_int64(101112);
288 lbug_value* value5 = lbug_value_create_int64(131415);
289 lbug_value* elements[] = {value1, value2, value3, value4, value5};
290 lbug_value* value = nullptr;
291 lbug_state state = lbug_value_create_list(5, elements, &value);
292 ASSERT_EQ(state, LbugSuccess);
293 // Destroy the original values, the list should still be valid
294 for (int i = 0; i < 5; ++i) {
295 lbug_value_destroy(elements[i]);
296 }
297 ASSERT_FALSE(value->_is_owned_by_cpp);
298 lbug_prepared_statement stmt;
299 state = lbug_connection_prepare(connection, (char*)"RETURN $1", &stmt);
300 ASSERT_EQ(state, LbugSuccess);
301 state = lbug_prepared_statement_bind_value(&stmt, "1", value);
302 ASSERT_EQ(state, LbugSuccess);
303 lbug_query_result result;
304 state = lbug_connection_execute(connection, &stmt, &result);
305 ASSERT_EQ(state, LbugSuccess);
306 ASSERT_TRUE(lbug_query_result_is_success(&result));
307 ASSERT_TRUE(lbug_query_result_has_next(&result));
308 lbug_flat_tuple flatTuple;
309 state = lbug_query_result_get_next(&result, &flatTuple);
310 ASSERT_EQ(state, LbugSuccess);
311 lbug_value outValue;
312 ASSERT_EQ(lbug_flat_tuple_get_value(&flatTuple, 0, &outValue), LbugSuccess);
313 ASSERT_TRUE(outValue._is_owned_by_cpp);
314 ASSERT_FALSE(lbug_value_is_null(&outValue));
315 uint64_t size;
316 ASSERT_EQ(lbug_value_get_list_size(&outValue, &size), LbugSuccess);
317 ASSERT_EQ(size, 5);
318 lbug_value listElement;
319 ASSERT_EQ(lbug_value_get_list_element(&outValue, 0, &listElement), LbugSuccess);
320 ASSERT_TRUE(listElement._is_owned_by_cpp);
321 int64_t int64Result;
322 ASSERT_EQ(lbug_value_get_int64(&listElement, &int64Result), LbugSuccess);
323 ASSERT_EQ(int64Result, 123);
324 lbug_value_destroy(&listElement);
325 ASSERT_EQ(lbug_value_get_list_element(&outValue, 1, &listElement), LbugSuccess);
326 ASSERT_TRUE(listElement._is_owned_by_cpp);
327 ASSERT_EQ(lbug_value_get_int64(&listElement, &int64Result), LbugSuccess);
328 ASSERT_EQ(int64Result, 456);
329 lbug_value_destroy(&listElement);
330 ASSERT_EQ(lbug_value_get_list_element(&outValue, 2, &listElement), LbugSuccess);
331 ASSERT_TRUE(listElement._is_owned_by_cpp);
332 ASSERT_EQ(lbug_value_get_int64(&listElement, &int64Result), LbugSuccess);
333 ASSERT_EQ(int64Result, 789);
334 lbug_value_destroy(&listElement);
335 ASSERT_EQ(lbug_value_get_list_element(&outValue, 3, &listElement), LbugSuccess);
336 ASSERT_TRUE(listElement._is_owned_by_cpp);
337 ASSERT_EQ(lbug_value_get_int64(&listElement, &int64Result), LbugSuccess);
338 ASSERT_EQ(int64Result, 101112);
339 lbug_value_destroy(&listElement);

Callers

nothing calls this directly

Calls 15

lbug_value_create_int64Function · 0.85
lbug_value_create_listFunction · 0.85
lbug_value_destroyFunction · 0.85
lbug_connection_prepareFunction · 0.85
lbug_connection_executeFunction · 0.85
lbug_value_is_nullFunction · 0.85
lbug_value_get_list_sizeFunction · 0.85

Tested by

no test coverage detected