From cd3d563e8d3a25466e08e81f77ee1cd0e43a9f85 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sat, 8 Sep 2012 10:01:46 +0200 Subject: [PATCH] [#1708] Add Map> ResultQuery.fetchGroupsInto(Field, Class) - Fixed test for those test configurations, that do not generate POJOs - Added more regression tests (not just checking for getId(), but also getTitle()). This will be important for optimisation tasks like #1808 --- .../org/jooq/test/_/testcases/FetchTests.java | 84 ++++++++++++------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java index 31e3ec2a83..73721a548b 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java @@ -1503,41 +1503,65 @@ extends BaseTest> map = create().selectFrom(TBook()).orderBy(TBook_ID()) - .fetchIntoGroups(TBook_ID(), (Class) book.get()); + // Group by BOOK.ID + Map> map1 = + create().selectFrom(TBook()) + .orderBy(TBook_ID()) + .fetchIntoGroups(TBook_ID(), (Class) book.get()); - assertEquals(4, map.size()); - assertEquals(BOOK_IDS, new ArrayList(map.keySet())); + assertEquals(4, map1.size()); + assertEquals(BOOK_IDS, new ArrayList(map1.keySet())); - for (Entry> entry : map.entrySet()) { - assertEquals(1, entry.getValue().size()); - assertEquals(entry.getKey(), on(entry.getValue().get(0)).call("getId").get()); + List>> entries = + new ArrayList>>(map1.entrySet()); + + for (int i = 0; i < map1.size(); i++) { + Entry> entry = entries.get(i); + assertEquals(1, entry.getValue().size()); + + assertEquals(BOOK_IDS.get(i), on(entry.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(i), on(entry.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(i), on(entry.getValue().get(0)).call("getTitle").get()); + } + + // Group by BOOK.AUTHOR_ID + Map> map2 = + create().selectFrom(TBook()) + .orderBy(TBook_ID()) + .fetchIntoGroups(TBook_AUTHOR_ID(), (Class) book.get()); + + assertEquals(2, map2.size()); + assertEquals(AUTHOR_IDS, new ArrayList(map2.keySet())); + + Iterator>> it = map2.entrySet().iterator(); + Entry> entry21 = it.next(); + assertEquals(2, entry21.getValue().size()); + assertEquals(BOOK_IDS.get(0), on(entry21.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(0), on(entry21.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(0), on(entry21.getValue().get(0)).call("getTitle").get()); + assertEquals(BOOK_IDS.get(1), on(entry21.getValue().get(1)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(1), on(entry21.getValue().get(1)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(1), on(entry21.getValue().get(1)).call("getTitle").get()); + + Entry> entry22 = it.next(); + assertEquals(2, entry22.getValue().size()); + assertEquals(BOOK_IDS.get(2), on(entry22.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(2), on(entry22.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(2), on(entry22.getValue().get(0)).call("getTitle").get()); + assertEquals(BOOK_IDS.get(3), on(entry22.getValue().get(1)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(3), on(entry22.getValue().get(1)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(3), on(entry22.getValue().get(1)).call("getTitle").get()); + + assertFalse(it.hasNext()); + } + catch (ReflectException e) { + log.info("SKIPPING", "Generated POJO tests"); } - - // Group by BOOK.AUTHOR_ID - map = create().selectFrom(TBook()).orderBy(TBook_ID()) - .fetchIntoGroups(TBook_AUTHOR_ID(), (Class) book.get()); - - assertEquals(2, map.size()); - assertEquals(AUTHOR_IDS, new ArrayList(map.keySet())); - - Iterator>> it = map.entrySet().iterator(); - Entry> entry21 = it.next(); - assertEquals(2, entry21.getValue().size()); - assertEquals(1, ((Integer) on(entry21.getValue().get(0)).call("getId").get()).intValue()); - assertEquals(2, ((Integer) on(entry21.getValue().get(1)).call("getId").get()).intValue()); - - Entry> entry22 = it.next(); - assertEquals(2, entry22.getValue().size()); - assertEquals(3, ((Integer) on(entry22.getValue().get(0)).call("getId").get()).intValue()); - assertEquals(4, ((Integer) on(entry22.getValue().get(1)).call("getId").get()).intValue()); - - assertFalse(it.hasNext()); } }