|
1 | 1 | package com.github.mrpowers.spark.fast.tests |
2 | 2 |
|
| 3 | +import com.github.mrpowers.spark.fast.tests.DataframeDiffOutputFormat.DataframeDiffOutputFormat |
3 | 4 | import com.github.mrpowers.spark.fast.tests.DatasetComparer.maxUnequalRowsToShow |
4 | 5 | import com.github.mrpowers.spark.fast.tests.SeqLikesExtensions.SeqExtensions |
5 | 6 | import org.apache.spark.rdd.RDD |
@@ -47,32 +48,39 @@ Expected DataFrame Row Count: '$expectedCount' |
47 | 48 | ignoreColumnOrder: Boolean = false, |
48 | 49 | ignoreMetadata: Boolean = true, |
49 | 50 | truncate: Int = 500, |
50 | | - equals: (T, T) => Boolean = (o1: T, o2: T) => o1.equals(o2) |
| 51 | + equals: (T, T) => Boolean = (o1: T, o2: T) => o1.equals(o2), |
| 52 | + outputFormat: DataframeDiffOutputFormat = DataframeDiffOutputFormat.SideBySide |
51 | 53 | ): Unit = { |
52 | 54 | SchemaComparer.assertDatasetSchemaEqual(actualDS, expectedDS, ignoreNullable, ignoreColumnNames, ignoreColumnOrder, ignoreMetadata) |
53 | 55 | val actual = if (ignoreColumnOrder) orderColumns(actualDS, expectedDS) else actualDS |
54 | | - assertSmallDatasetContentEquality(actual, expectedDS, orderedComparison, truncate, equals) |
| 56 | + assertSmallDatasetContentEquality(actual, expectedDS, orderedComparison, truncate, equals, outputFormat) |
55 | 57 | } |
56 | 58 |
|
57 | 59 | def assertSmallDatasetContentEquality[T: ClassTag]( |
58 | 60 | actualDS: Dataset[T], |
59 | 61 | expectedDS: Dataset[T], |
60 | 62 | orderedComparison: Boolean, |
61 | 63 | truncate: Int, |
62 | | - equals: (T, T) => Boolean |
| 64 | + equals: (T, T) => Boolean, |
| 65 | + outputFormat: DataframeDiffOutputFormat |
63 | 66 | ): Unit = { |
64 | 67 | if (orderedComparison) |
65 | | - assertSmallDatasetContentEquality(actualDS, expectedDS, truncate, equals) |
| 68 | + assertSmallDatasetContentEquality(actualDS, expectedDS, truncate, equals, outputFormat) |
66 | 69 | else |
67 | | - assertSmallDatasetContentEquality(defaultSortDataset(actualDS), defaultSortDataset(expectedDS), truncate, equals) |
| 70 | + assertSmallDatasetContentEquality(defaultSortDataset(actualDS), defaultSortDataset(expectedDS), truncate, equals, outputFormat) |
68 | 71 | } |
69 | 72 |
|
70 | | - def assertSmallDatasetContentEquality[T: ClassTag](actualDS: Dataset[T], expectedDS: Dataset[T], truncate: Int, equals: (T, T) => Boolean): Unit = { |
| 73 | + def assertSmallDatasetContentEquality[T: ClassTag]( |
| 74 | + actualDS: Dataset[T], |
| 75 | + expectedDS: Dataset[T], |
| 76 | + truncate: Int, |
| 77 | + equals: (T, T) => Boolean, |
| 78 | + outputFormat: DataframeDiffOutputFormat |
| 79 | + ): Unit = { |
71 | 80 | val a = actualDS.collect().toSeq |
72 | 81 | val e = expectedDS.collect().toSeq |
73 | 82 | if (!a.approximateSameElements(e, equals)) { |
74 | | - val arr = ("Actual Content", "Expected Content") |
75 | | - val msg = "Diffs\n" ++ ProductUtil.showProductDiff(arr, a, e, truncate) |
| 83 | + val msg = "Diffs\n" ++ ProductUtil.showProductDiff(expectedDS.columns, a, e, truncate, outputFormat = outputFormat) |
76 | 84 | throw DatasetContentMismatch(msg) |
77 | 85 | } |
78 | 86 | } |
|
0 commit comments