Javier
10/17/2021, 3:56 AMJim
10/17/2021, 3:59 AMsam
10/17/2021, 4:04 AMdir1 shouldHaveSomeStrutureAs dir2
LeoColman
10/17/2021, 10:25 AMJavier
10/17/2021, 11:35 AMsam
10/17/2021, 3:22 PMJavier
10/17/2021, 3:22 PMshouldHaveSameTreeAndContents
to be more explicit, feels free to suggest if I should change itsam
10/17/2021, 3:23 PMJavier
10/17/2021, 3:23 PMsam
10/17/2021, 3:23 PMshouldHaveSameStructure
?Javier
10/17/2021, 3:23 PMsam
10/17/2021, 3:30 PMJavier
10/17/2021, 9:35 PM\
instead of /
and so onexpectFiles.zip(actualFiles).forEach { (expect, actual) ->
expect.replaceSlash()
actual.replaceSlash()
when {
expect.extension == "gz" -> println("`.gz` files are ignored")
expect.extension == "json" -> println("`.gz` files are ignored")
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> actual.shouldHaveSameContentAs(actual)
}
}
sam
10/17/2021, 9:36 PMJavier
10/17/2021, 9:36 PMtransform
lambda and filter
predicate?sam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMshouldHaveSameTreeAndContents
sam
10/17/2021, 9:37 PMJim
10/17/2021, 9:37 PMJavier
10/17/2021, 9:37 PMsam
10/17/2021, 9:37 PMJavier
10/17/2021, 9:38 PMJim
10/17/2021, 9:38 PMsam
10/17/2021, 9:38 PMJavier
10/17/2021, 9:38 PMsam
10/17/2021, 9:38 PMJavier
10/17/2021, 9:39 PMsam
10/17/2021, 9:40 PMJavier
10/17/2021, 9:40 PMsam
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PM\
in its content in windowssam
10/17/2021, 9:41 PMJavier
10/17/2021, 9:41 PMsam
10/17/2021, 9:42 PMJavier
10/17/2021, 9:42 PMfun File.shouldHaveSameStructure(file: File, transform: transform: (T) -> Unit, filter: (T) -> Boolean)
sam
10/17/2021, 9:43 PMJim
10/17/2021, 9:43 PMsam
10/17/2021, 9:43 PMJim
10/17/2021, 9:44 PMother: File
sam
10/17/2021, 9:45 PMJavier
10/17/2021, 9:45 PMsam
10/17/2021, 9:45 PMJavier
10/17/2021, 9:45 PMsam
10/17/2021, 9:46 PMJavier
10/17/2021, 9:46 PMsam
10/17/2021, 9:46 PMJavier
10/17/2021, 9:48 PMsam
10/17/2021, 9:48 PMJavier
10/17/2021, 9:48 PMsam
10/17/2021, 9:50 PMJavier
10/17/2021, 9:57 PMfun File.shouldHaveSameStructure(
file: File,
filter: (expect: File, actual: File) -> Boolean
) {
val expectFiles = this.walkTopDown().toList()
val actualFiles = file.walkTopDown().toList()
expectFiles shouldBeSameSizeAs actualFiles
expectFiles.zip(actualFiles) { expect, actual ->
when {
filter(expect, actual) -> {}
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> expect shouldHavePath actual.path
else -> error("There is an unexpected error analyzing file trees")
}
}
}
sam
10/17/2021, 9:58 PMJavier
10/17/2021, 9:58 PMsam
10/17/2021, 9:58 PMJavier
10/17/2021, 9:59 PMfileA.shouldHaveSameStructure(fileB, filter = { a, b -> a.extension == "html" })
sam
10/17/2021, 10:00 PMJavier
10/17/2021, 10:01 PMfileA.shouldHaveSameStructure(fileB, filter = { a, b -> a.readlines().size == 2 || b.readlines().size == 5 })
sam
10/17/2021, 10:02 PMJim
10/17/2021, 10:02 PMJavier
10/17/2021, 10:02 PMsam
10/17/2021, 10:03 PMJavier
10/17/2021, 10:03 PM.gz
Jim
10/17/2021, 10:06 PMJavier
10/17/2021, 10:07 PMfilter
name?Jim
10/17/2021, 10:10 PMit
instead of a, b
sam
10/17/2021, 10:12 PMJavier
10/17/2021, 10:12 PMfun File.shouldHaveSameStructure(
file: File,
filter: (File) -> Boolean
) {
val expectFiles = this.walkTopDown().toList()
val actualFiles = file.walkTopDown().toList()
expectFiles shouldBeSameSizeAs actualFiles
expectFiles.zip(actualFiles) { expect, actual ->
when {
filter(expect) -> {}
expect.isDirectory -> actual.shouldBeADirectory()
expect.isFile -> expect shouldHavePath actual.path
else -> error("There is an unexpected error analyzing file trees")
}
}
}
sam
10/17/2021, 10:12 PMfun File.shouldHaveSameStructure(
file: File,
filter: (File) -> Boolean
)
or
fun File.shouldHaveSameStructure(
file: File,
filterLhs: (File) -> Boolean,
filterRhs: (File-> Boolean,
)
If you really really want to filter the two sides separatelyJavier
10/17/2021, 10:13 PMtransform
, I should do that too?sam
10/17/2021, 10:15 PMJavier
10/17/2021, 10:15 PM&&
or ||
filterLhs(expect) && filterRhs(actual) -> {}
sam
10/17/2021, 10:16 PMJavier
10/17/2021, 10:16 PMsam
10/17/2021, 10:19 PMJavier
10/17/2021, 10:20 PMsam
10/17/2021, 10:20 PMJavier
10/17/2021, 10:21 PMsam
10/17/2021, 10:21 PMJavier
10/17/2021, 10:24 PMfun File.shouldHaveSameStructure(
file: File,
filterLhs: (File) -> Boolean,
filterRhs: (File) -> Boolean,
) {
compare
, my head did "tick"