Skip to content

Commit

Permalink
Add tests for CF parsing when building stdlib
Browse files Browse the repository at this point in the history
  • Loading branch information
jedesroches committed Oct 29, 2023
1 parent 00e2a1b commit f3473e2
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 8 deletions.
14 changes: 8 additions & 6 deletions buildSrc/src/main/kotlin/task/EFRecord.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,21 @@ sealed class EFRecord(val record: CSVRecord) {
// FIXME - is this correct ?
fun subCompartment(): String =
record["FLOW_class2"]
}

class EF31Record(record: CSVRecord) : EFRecord(record) {
override fun characterizationFactor(): Double {
val csvValue = record["CF EF3.1"]
protected fun getCF(cell: String): Double {
val csvValue = record[cell]
return when {
csvValue == null || csvValue.isEmpty() -> 0.0
csvValue.toDoubleOrNull() == null -> throw Exception("Please please please don't let this happen ><")
csvValue.toDoubleOrNull() == null -> throw Exception("Invalid CF value: $csvValue")
else -> csvValue.toDouble()
}
}
}

class EF31Record(record: CSVRecord) : EFRecord(record) {
override fun characterizationFactor(): Double = getCF("CF EF3.1")
}

class EF30Record(record: CSVRecord) : EFRecord(record) {
override fun characterizationFactor(): Double = record["LCIAMethod_meanvalue"].toDouble() // FIXME
override fun characterizationFactor(): Double = getCF("LCIAMethod_meanvalue")
}
72 changes: 72 additions & 0 deletions buildSrc/src/test/kotlin/task/GenerateEmissionFactorsTaskTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package task

import io.mockk.every
import io.mockk.mockk
import org.apache.commons.csv.CSVRecord
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFile
import org.gradle.api.internal.provider.DefaultProvider
Expand All @@ -12,6 +13,77 @@ import java.util.concurrent.Callable

class GenerateEmissionFactorsTaskTest {

@Test
fun substance_31_parser_should_succeed_on_double() {
// given
val record = mockk<CSVRecord>()
val expected = 3.7e-5
every { record["CF EF3.1"] } returns expected.toString()
val sut = EF31Record(record)

// {w,t}hen
Assertions.assertEquals(expected, sut.characterizationFactor())
}

@Test
fun substance_30_parser_should_succeed_on_double() {
// given
val record = mockk<CSVRecord>()
val expected = 13.7e-5
every { record["LCIAMethod_meanvalue"] } returns expected.toString()
val sut = EF30Record(record)

// {w,t}hen
Assertions.assertEquals(expected, sut.characterizationFactor())
}

@Test
fun substance_31_parser_should_zero_for_empty() {
// given
val record = mockk<CSVRecord>()
val expected = 0.0
every { record["CF EF3.1"] } returns ""
val sut = EF31Record(record)

// {w,t}hen
Assertions.assertEquals(expected, sut.characterizationFactor())
}

@Test
fun substance_30_parser_should_zero_for_empty() {
// given
val record = mockk<CSVRecord>()
val expected = 0.0
every { record["LCIAMethod_meanvalue"] } returns expected.toString()
val sut = EF30Record(record)

// {w,t}hen
Assertions.assertEquals(expected, sut.characterizationFactor())
}

@Test
fun substance_31_parser_should_fail_when_not_double() {
// given
val record = mockk<CSVRecord>()
every { record["CF EF3.1"] } returns "hello world"
val sut = EF31Record(record)

// {w,t}hen
val e = Assertions.assertThrows(Exception::class.java) { sut.characterizationFactor() }
Assertions.assertEquals("Invalid CF value: hello world", e.message)
}

@Test
fun substance_30_parser_should_fail_when_not_double() {
// given
val record = mockk<CSVRecord>()
every { record["LCIAMethod_meanvalue"] } returns "hello world"
val sut = EF30Record(record)

// {w,t}hen
val e = Assertions.assertThrows(Exception::class.java) { sut.characterizationFactor() }
Assertions.assertEquals("Invalid CF value: hello world", e.message)
}
@Test
fun substance31() {
// given
Expand Down
4 changes: 2 additions & 2 deletions plugin/.run/Build Plugin.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</option>
<option name="taskNames">
<list>
<option value="plugin:plugin:buildPlugin" />
<option value="plugin:buildPlugin" />
</list>
</option>
<option name="vmOptions" value="" />
Expand All @@ -22,4 +22,4 @@
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
</component>

0 comments on commit f3473e2

Please sign in to comment.