1+ #include < chrono>
12#include < sqlite_orm/sqlite_orm.h>
23#include < catch2/catch_all.hpp>
34
@@ -293,7 +294,7 @@ TEST_CASE("statement_serializer select_t") {
293294 }
294295 }
295296 }
296- SECTION (" cross join" ) {
297+ SECTION (" { cross, natural} join" ) {
297298 struct Rank {
298299 std::string rank;
299300 };
@@ -307,19 +308,39 @@ TEST_CASE("statement_serializer select_t") {
307308 using db_objects_t = internal::db_objects_tuple<decltype (rankTable), decltype (suitTable)>;
308309 db_objects_t dbObjects{rankTable, suitTable};
309310 internal::serializer_context<db_objects_t > context{dbObjects};
310-
311- SECTION (" straight" ) {
312- auto expression = select (columns (&Rank::rank, &Suit::suit), cross_join<Suit>(), order_by (&Suit::suit));
313- expression.highest_level = true ;
314- stringValue = serialize (expression, context);
311+ SECTION (" cross join" ) {
312+ SECTION (" straight" ) {
313+ auto expression = select (columns (&Rank::rank, &Suit::suit), cross_join<Suit>(), order_by (&Suit::suit));
314+ expression.highest_level = true ;
315+ stringValue = serialize (expression, context);
316+ }
317+ SECTION (" alias" ) {
318+ using suit_s = alias_s<Suit>;
319+ auto expression =
320+ select (columns (&Rank::rank, &Suit::suit), cross_join<suit_s>(), order_by (&Suit::suit));
321+ expression.highest_level = true ;
322+ stringValue = serialize (expression, context);
323+ }
324+ expected =
325+ R"( SELECT "ranks"."rank", "suits"."suit" FROM "ranks" CROSS JOIN "suits" ORDER BY "suits"."suit")" ;
315326 }
316- SECTION (" alias" ) {
317- using suit_s = alias_s<Suit>;
318- auto expression = select (columns (&Rank::rank, &Suit::suit), cross_join<suit_s>(), order_by (&Suit::suit));
319- expression.highest_level = true ;
320- stringValue = serialize (expression, context);
327+ SECTION (" natural join" ) {
328+ SECTION (" straight" ) {
329+ auto expression =
330+ select (columns (&Rank::rank, &Suit::suit), natural_join<Suit>(), order_by (&Suit::suit));
331+ expression.highest_level = true ;
332+ stringValue = serialize (expression, context);
333+ }
334+ SECTION (" alias" ) {
335+ using suit_s = alias_s<Suit>;
336+ auto expression =
337+ select (columns (&Rank::rank, &Suit::suit), natural_join<suit_s>(), order_by (&Suit::suit));
338+ expression.highest_level = true ;
339+ stringValue = serialize (expression, context);
340+ }
341+ expected =
342+ R"( SELECT "ranks"."rank", "suits"."suit" FROM "ranks" NATURAL JOIN "suits" ORDER BY "suits"."suit")" ;
321343 }
322- expected = R"( SELECT "ranks"."rank", "suits"."suit" FROM "ranks" CROSS JOIN "suits" ORDER BY "suits"."suit")" ;
323344 }
324345 REQUIRE (stringValue == expected);
325346}
0 commit comments