[Native][tests] Fix multimodule test samples to avoid @Test functions in modules compiled to KLIBs
Such functions are not included into the test-runner generated during compilation of the main module.
This commit is contained in:
+81
-24
@@ -1,35 +1,92 @@
|
|||||||
// MODULE: a
|
// MODULE: distance
|
||||||
// FILE: addition.kt
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(distance,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: constants
|
||||||
|
// FILE: main.kt
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// MODULE: shapes(mass,constants)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun surfaceArea() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: m(a)
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun volume() {
|
||||||
assertEquals(42, 21 * 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: s(m)()
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun subtraction () {
|
fun mass() {
|
||||||
assertEquals(42, 50 - 8)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: d(s)(s)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
+80
-40
@@ -1,51 +1,91 @@
|
|||||||
// FILE: addition.kt
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(default,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: constants
|
||||||
|
// FILE: main.kt
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// MODULE: shapes(mass,constants)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun surfaceArea() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun volume() {
|
||||||
assertEquals(42, 21 * 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: b(default)
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun subtraction () {
|
fun mass() {
|
||||||
assertEquals(42, 50 - 8)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: c(b)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MODULE: d(default)
|
|
||||||
// FILE: division2.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division2 () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MODULE: e(d)
|
|
||||||
// FILE: division3.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division3 () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
+81
-23
@@ -1,37 +1,95 @@
|
|||||||
/**
|
/**
|
||||||
* This is a header comment that should be prepended to the addition.kt file.
|
* This is a header comment that should be prepended to the default/entities.kt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// FILE: addition.kt
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(default,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: constants
|
||||||
|
// FILE: main.kt
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// MODULE: shapes(mass,constants)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun surfaceArea() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun volume() {
|
||||||
assertEquals(42, 21 * 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: b(default)
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun subtraction () {
|
fun mass() {
|
||||||
assertEquals(42, 50 - 8)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: c(default)(default)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
+79
-29
@@ -1,40 +1,90 @@
|
|||||||
|
// This is a statement that should go to main.kt in the default module:
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(default,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: shapes(mass)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun foo() {
|
fun surfaceArea() {
|
||||||
println("This is a statement that should go to main.kt in the default module")
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILE: addition.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun volume() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun mass() {
|
||||||
assertEquals(42, 21 * 2)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: b(default)
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun subtraction () {
|
|
||||||
assertEquals(42, 50 - 8)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MODULE: c(default)(default)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
+82
-25
@@ -1,39 +1,96 @@
|
|||||||
/**
|
/**
|
||||||
* This is a header comment that should be prepended to the addition.kt file.
|
* This is a header comment that should be prepended to the distance/entities.kt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// MODULE: a
|
// MODULE: distance
|
||||||
// FILE: addition.kt
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(distance,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: constants
|
||||||
|
// FILE: main.kt
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// MODULE: shapes(mass,constants)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun surfaceArea() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: m(a)
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun volume() {
|
||||||
assertEquals(42, 21 * 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: s(m)()
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun subtraction () {
|
fun mass() {
|
||||||
assertEquals(42, 50 - 8)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: d(s)(s)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
+80
-31
@@ -1,42 +1,91 @@
|
|||||||
|
// This is a statement that should go to main.kt in the default module:
|
||||||
|
const val TRIVIAL_PI = 3.14
|
||||||
|
|
||||||
|
// MODULE: distance
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Length(val meters: Double)
|
||||||
|
value class SurfaceArea(val squareMeters: Double)
|
||||||
|
value class Volume(val cubicMeters: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Meters: Length get() = Length(toDouble())
|
||||||
|
val Number.SquareMeters: SurfaceArea get() = SurfaceArea(toDouble())
|
||||||
|
val Number.CubicMeters: Volume get() = Volume(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Number.times(length: Length): Length = Length(toDouble() * length.meters)
|
||||||
|
operator fun Number.times(surfaceArea: SurfaceArea): SurfaceArea = SurfaceArea(toDouble() * surfaceArea.squareMeters)
|
||||||
|
operator fun Number.times(volume: Volume): Volume = Volume(toDouble() * volume.cubicMeters)
|
||||||
|
|
||||||
|
operator fun Length.times(factor: Number): Length = Length(meters * factor.toDouble())
|
||||||
|
operator fun Length.times(length: Length): SurfaceArea = SurfaceArea(meters * length.meters)
|
||||||
|
operator fun Length.times(surfaceArea: SurfaceArea): Volume = Volume(meters * surfaceArea.squareMeters)
|
||||||
|
|
||||||
|
operator fun SurfaceArea.times(factor: Number): SurfaceArea = SurfaceArea(squareMeters * factor.toDouble())
|
||||||
|
operator fun SurfaceArea.times(length: Length): Volume = Volume(squareMeters * length.meters)
|
||||||
|
|
||||||
|
operator fun Volume.times(factor: Number): Volume = Volume(cubicMeters * factor.toDouble())
|
||||||
|
|
||||||
|
// MODULE: density
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Density(val kilogramsPerCubicMeter: Double) {
|
||||||
|
companion object {
|
||||||
|
val AIR: Density = 1.2.KilogramsPerCubicMeter
|
||||||
|
val WATER: Density = 1000.KilogramsPerCubicMeter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.KilogramsPerCubicMeter: Density get() = Density(toDouble())
|
||||||
|
|
||||||
|
// MODULE: mass(distance,density)
|
||||||
|
// FILE: entities.kt
|
||||||
|
value class Mass(val kilograms: Double)
|
||||||
|
|
||||||
|
// FILE: extensions.kt
|
||||||
|
val Number.Kilograms: Mass get() = Mass(toDouble())
|
||||||
|
|
||||||
|
// FILE: operators.kt
|
||||||
|
operator fun Volume.times(density: Density): Mass = Mass(cubicMeters * density.kilogramsPerCubicMeter)
|
||||||
|
operator fun Density.times(volume: Volume): Mass = Mass(kilogramsPerCubicMeter * volume.cubicMeters)
|
||||||
|
|
||||||
|
// MODULE: shapes(mass,default)
|
||||||
|
// FILE: default.kt
|
||||||
|
class Ball(private val radius: Length) {
|
||||||
|
val surfaceArea1: SurfaceArea get() = TRIVIAL_PI * radius * radius
|
||||||
|
val surfaceArea2: SurfaceArea get() = radius * TRIVIAL_PI * radius
|
||||||
|
val surfaceArea3: SurfaceArea get() = radius * radius * TRIVIAL_PI
|
||||||
|
|
||||||
|
val volume1: Volume get() = 0.75 * surfaceArea1 * radius
|
||||||
|
val volume2: Volume get() = 0.75 * (radius * surfaceArea1)
|
||||||
|
val volume3: Volume get() = surfaceArea1 * radius * 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: assertions(shapes)
|
||||||
|
// FILE: checks.kt
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun foo() {
|
fun surfaceArea() {
|
||||||
println("This is a statement that should go to main.kt in the default module")
|
with(Ball(10.Meters)) {
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea1)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea2)
|
||||||
|
assertEquals(314.SquareMeters, surfaceArea3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: a
|
|
||||||
// FILE: addition.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun addition() {
|
fun volume() {
|
||||||
assertEquals(42, 40 + 2)
|
with(Ball(20.Meters)) {
|
||||||
|
assertEquals(18840.CubicMeters, volume1)
|
||||||
|
assertEquals(18840.CubicMeters, volume2)
|
||||||
|
assertEquals(18840.CubicMeters, volume3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: m(a)
|
|
||||||
// FILE: multiplication.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun multiplication () {
|
fun mass() {
|
||||||
assertEquals(42, 21 * 2)
|
assertEquals(6.Kilograms, 5.CubicMeters * Density.AIR)
|
||||||
|
assertEquals(3500.Kilograms, 3.5.CubicMeters * Density.WATER)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: s(m)()
|
|
||||||
// FILE: subtraction.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun subtraction () {
|
|
||||||
assertEquals(42, 50 - 8)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MODULE: d(s)(s)
|
|
||||||
// FILE: division.kt
|
|
||||||
import kotlin.test.*
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun division () {
|
|
||||||
assertEquals(42, 126 / 3)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user