Move most tests to commonTest

pull/498/head
Alinson S. Xavier 7 years ago
parent e88c58916a
commit 8972f2d03d

@ -17,13 +17,10 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform.io
package org.isoron
import kotlin.test.*
class JsFilesTest {
@Test
fun testReadLines() {
FilesTest(JsFileOpener()).testReadLines()
}
open class BaseTest {
val resolver = DependencyResolver()
val fileOpener = resolver.getFileOpener()
val db = resolver.getDatabase()
}

@ -17,15 +17,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform
package org.isoron
import org.isoron.platform.gui.*
import org.isoron.platform.io.*
import org.isoron.uhabits.*
import org.junit.*
class JavaFilesTest : BaseTest() {
@Test
fun testReadLines() {
FilesTest(fileOpener).testReadLines()
}
expect class DependencyResolver() {
fun getFileOpener(): FileOpener
fun getDatabase(): Database
fun createCanvas(width: Int, height: Int): Canvas
fun exportCanvas(canvas: Canvas, filename: String)
}

@ -19,14 +19,14 @@
package org.isoron.platform.gui
class CanvasTest(val platform: Platform) {
interface Platform {
fun createCanvas(width: Int, height: Int): Canvas
fun writePng(canvas: Canvas, filename: String)
}
import org.isoron.*
import kotlin.test.*
class CanvasTest() : BaseTest() {
@Test
fun testDrawing() {
val canvas = platform.createCanvas(500, 400)
val canvas = resolver.createCanvas(500, 400)
canvas.setColor(Color(0x303030))
canvas.fillRect(0.0, 0.0, 500.0, 400.0)
@ -66,6 +66,6 @@ class CanvasTest(val platform: Platform) {
canvas.setFont(Font.FONT_AWESOME)
canvas.drawText(FontAwesome.CHECK, 250.0, 300.0)
platform.writePng(canvas, "CanvasTest.png")
resolver.exportCanvas(canvas, "CanvasTest.png")
}
}

@ -19,9 +19,11 @@
package org.isoron.platform.io
import kotlin.test.assertEquals
import org.isoron.*
import kotlin.test.*
class DatabaseTest(val db: Database) {
class DatabaseTest() : BaseTest() {
@Test
fun testUsage() {
db.setVersion(0)
assertEquals(0, db.getVersion())

@ -19,9 +19,11 @@
package org.isoron.platform.io
import org.isoron.*
import kotlin.test.*
class FilesTest(val fileOpener: FileOpener) {
class FilesTest() : BaseTest() {
@Test
fun testReadLines() {
val hello = fileOpener.openResourceFile("hello.txt")
var lines = hello.readLines()

@ -19,10 +19,10 @@
package org.isoron.uhabits.models
import junit.framework.TestCase.*
import org.isoron.*
import org.isoron.platform.time.*
import org.isoron.uhabits.*
import org.junit.*
import kotlin.test.*
class CheckmarkRepositoryTest : BaseTest() {
@Test
@ -45,7 +45,7 @@ class CheckmarkRepositoryTest : BaseTest() {
for (c in checkmarksB) repository.insert(habitB, c)
assertEquals(checkmarksA, repository.findAll(habitA))
assertEquals(checkmarksB, repository.findAll(habitB))
assertEquals(listOf<Checkmark>(), repository.findAll(999))
assertEquals(listOf(), repository.findAll(999))
checkmarksA = listOf(Checkmark(LocalDate(2019, 1, 15), 100),
Checkmark(LocalDate(2019, 1, 1), 900))

@ -19,17 +19,19 @@
package org.isoron.uhabits.models
import org.isoron.*
import org.isoron.platform.gui.*
import org.isoron.platform.io.*
import kotlin.test.*
class HabitRepositoryTest(val db: Database) {
class HabitRepositoryTest() : BaseTest() {
lateinit var repository: HabitRepository
lateinit private var original0: Habit
lateinit private var original1: Habit
lateinit private var original2: Habit
@BeforeTest
fun setUp() {
original0 = Habit(id = 0,
name = "Wake up early",
@ -67,6 +69,7 @@ class HabitRepositoryTest(val db: Database) {
repository = HabitRepository(db)
}
@Test
fun testFindAll() {
var habits = repository.findAll()
assertEquals(0, repository.nextId())

@ -19,9 +19,8 @@
package org.isoron.uhabits.models
import junit.framework.TestCase.*
import org.isoron.uhabits.*
import org.junit.*
import org.isoron.*
import kotlin.test.*
class PreferencesRepositoryTest : BaseTest() {
@Test

@ -17,16 +17,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform.io
package org.isoron
import org.isoron.platform.gui.*
import org.isoron.platform.io.*
import org.isoron.uhabits.BaseTest
import org.junit.Test
import kotlin.test.assertEquals
class JavaDatabaseTest : BaseTest() {
@Test
fun testUsage() {
DatabaseTest(db).testUsage()
}
actual class DependencyResolver {
actual fun getFileOpener(): FileOpener = TODO()
actual fun getDatabase(): Database = TODO()
actual fun createCanvas(width: Int, height: Int): Canvas = TODO()
actual fun exportCanvas(canvas: Canvas, filename: String): Unit = TODO()
}

@ -17,14 +17,29 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform.io
package org.isoron
import kotlin.test.*
import org.isoron.platform.gui.*
import org.isoron.platform.io.*
import org.w3c.dom.*
import kotlin.browser.*
class JsDatabaseTest {
@Test
fun testUsage() {
actual class DependencyResolver {
actual fun getFileOpener(): FileOpener = JsFileOpener()
actual fun getDatabase(): Database {
val db = eval("new SQL.Database()")
DatabaseTest(JsDatabase(db)).testUsage()
return JsDatabase(db)
}
actual fun createCanvas(width: Int, height: Int): Canvas {
val canvasElement = document.getElementById("canvas") as HTMLCanvasElement
canvasElement.style.width = "${width}px"
canvasElement.style.height = "${height}px"
return HtmlCanvas(canvasElement)
}
actual fun exportCanvas(canvas: Canvas, filename: String) {
// do nothing
}
}

@ -1,37 +0,0 @@
/*
* Copyright (C) 2016-2019 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform.gui
import org.w3c.dom.*
class HtmlCanvasTest(val canvas: HTMLCanvasElement) : CanvasTest.Platform {
override fun createCanvas(width: Int, height: Int): Canvas {
return HtmlCanvas(canvas)
}
override fun writePng(canvas: Canvas, filename: String) {
}
fun testDrawing() {
val test = CanvasTest(this)
test.testDrawing()
}
}

@ -1,35 +0,0 @@
/*
* Copyright (C) 2016-2019 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.models
import org.isoron.platform.io.*
import kotlin.test.*
class JsHabitRepositoryTest {
val db = JsDatabase(eval("new SQL.Database()"))
val commonTest = HabitRepositoryTest(db)
@Test
fun testFindAll() {
// commonTest.setUp()
// commonTest.testFindAll()
}
}

@ -17,28 +17,38 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.platform
package org.isoron
import org.isoron.platform.gui.*
import org.junit.*
import org.isoron.platform.io.*
import org.isoron.uhabits.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
actual class DependencyResolver actual constructor() {
class JavaCanvasTest : CanvasTest.Platform {
private val commonTest = CanvasTest(this)
val log = StandardLog()
val fileOpener = JavaFileOpener()
val databaseOpener = JavaDatabaseOpener(log)
@Test
fun testDrawing() = commonTest.testDrawing()
actual fun getFileOpener(): FileOpener = fileOpener
override fun createCanvas(width: Int, height: Int): Canvas {
actual fun getDatabase(): Database {
val dbFile = fileOpener.openUserFile("test.sqlite3")
if (dbFile.exists()) dbFile.delete()
val db = databaseOpener.open(dbFile)
db.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log)
return db
}
actual fun createCanvas(width: Int, height: Int): Canvas {
val image = BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)
return JavaCanvas(image, pixelScale=1.0)
return JavaCanvas(image, pixelScale = 1.0)
}
override fun writePng(canvas: Canvas, filename: String) {
actual fun exportCanvas(canvas: Canvas, filename: String) {
val javaCanvas = canvas as JavaCanvas
ImageIO.write(javaCanvas.image, "png", File("/tmp/JavaCanvasTest.png"))
ImageIO.write(javaCanvas.image, "png", File("/tmp/$filename"))
}
}

@ -26,7 +26,7 @@ import java.util.*
import java.util.Calendar.*
class JavaDatesTest {
class DatesTest {
private val d1 = LocalDate(2019, 3, 25)
private val d2 = LocalDate(2019, 4, 4)
private val d3 = LocalDate(2019, 5, 12)

@ -19,41 +19,18 @@
package org.isoron.uhabits
import org.isoron.platform.concurrency.*
import org.isoron.platform.gui.*
import org.isoron.platform.io.*
import org.isoron.platform.time.*
import org.isoron.uhabits.components.*
import org.junit.*
import java.awt.image.*
import java.io.*
import javax.imageio.*
import kotlin.math.*
open class BaseTest {
val fileOpener = JavaFileOpener()
val log = StandardLog()
val databaseOpener = JavaDatabaseOpener(log)
val taskRunner = SequentialTaskRunner()
lateinit var db: Database
@Before
open fun setUp() {
val dbFile = fileOpener.openUserFile("test.sqlite3")
if (dbFile.exists()) dbFile.delete()
db = databaseOpener.open(dbFile)
db.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log)
}
}
open class BaseViewTest {
val theme = LightTheme()
fun distance(actual: BufferedImage,
private fun distance(actual: BufferedImage,
expected: BufferedImage): Double {
if (actual.width != expected.width) return Double.POSITIVE_INFINITY

@ -1,89 +0,0 @@
/*
* Copyright (C) 2016-2019 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.backend
import junit.framework.TestCase.*
import org.isoron.platform.gui.*
import org.isoron.uhabits.*
import org.junit.*
import java.util.*
import java.util.concurrent.*
class BackendTest : BaseTest() {
lateinit var backend: Backend
private val latch = CountDownLatch(1)
val dbFilename = "uhabits${Random().nextInt()}.db"
val dbFile = fileOpener.openUserFile(dbFilename)
// @Before
// override fun setUp() {
// super.setUp()
// if (dbFile.exists()) dbFile.delete()
// backend = Backend(dbFilename,
// databaseOpener,
// fileOpener,
// log,
// taskRunner)
// }
//
// @After
// fun tearDown() {
// dbFile.delete()
// }
// @Test
// fun testMainScreenDataSource() {
// val listener = object : MainScreenDataSource.Listener {
// override fun onDataChanged(newData: MainScreenDataSource.Data) {
// val expected = MainScreenDataSource.Data(
// ids = listOf(0, 10, 9, 2, 3, 4, 5, 11, 6, 7, 8),
// scores = listOf(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
// 0.0, 0.0, 0.0),
// names = listOf("Wake up early", "Eat healthy", "Floss",
// "Journal", "Track time", "Meditate",
// "Work out", "Take a walk", "Read books",
// "Learn French", "Play chess"),
// colors = listOf(PaletteColor(8), PaletteColor(8),
// PaletteColor(8), PaletteColor(11),
// PaletteColor(11), PaletteColor(15),
// PaletteColor(15), PaletteColor(15),
// PaletteColor(2), PaletteColor(2),
// PaletteColor(13)),
// checkmarks = listOf(
// listOf(2, 0, 0, 0, 0, 2, 0),
// listOf(0, 2, 2, 2, 2, 2, 0),
// listOf(0, 0, 0, 0, 2, 0, 0),
// listOf(0, 2, 0, 2, 0, 0, 0),
// listOf(2, 2, 2, 0, 2, 2, 2),
// listOf(2, 1, 1, 2, 1, 2, 2),
// listOf(2, 0, 2, 0, 2, 1, 2),
// listOf(0, 2, 2, 2, 2, 0, 0),
// listOf(0, 2, 2, 2, 2, 2, 0),
// listOf(0, 0, 2, 0, 2, 0, 2),
// listOf(0, 2, 0, 0, 2, 2, 0)))
// assertEquals(newData, expected)
// latch.countDown()
// }
// }
// backend.mainScreenDataSource.observable.addListener(listener)
// backend.mainScreenDataSource.requestData()
// assertTrue(latch.await(3, TimeUnit.SECONDS))
// }
}

@ -1,40 +0,0 @@
/*
* Copyright (C) 2016-2019 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.models
import org.isoron.uhabits.*
import org.junit.*
class JavaHabitRepositoryTest : BaseTest() {
lateinit var commonTest: HabitRepositoryTest
@Before
override fun setUp() {
super.setUp()
commonTest = HabitRepositoryTest(db)
commonTest.setUp()
}
@Test
fun testFindAll() {
commonTest.testFindAll()
}
}

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Canvas Test</title>
<style>
@font-face {
font-family: "FontAwesome";
src: url(../assets/fonts/FontAwesome.ttf) format("truetype");
}
</style>
</head>
<body>
<script src="../js/sql.js"></script>
<script src="../js/test.js"></script>
<canvas id="canvas" width=500 height=400></canvas>
<script>
const canvas = document.getElementById('canvas');
const test = new document.coreTest.org.isoron.platform.gui.HtmlCanvasTest(canvas);
test.testDrawing();
</script>
</body>
</html>

@ -4,9 +4,16 @@
<title>Mocha Tests</title>
<link rel="stylesheet" href="../lib/mocha.css">
<script src="../lib/sql.js"></script>
<style>
@font-face {
font-family: "FontAwesome";
src: url(../assets/fonts/FontAwesome.ttf) format("truetype");
}
</style>
</head>
<body>
<div id="mocha"></div>
<canvas id="canvas" style="width: 500px; height: 400px; display: none;"></canvas>
<script src="../lib/mocha.js"></script>
<script>mocha.setup('bdd')</script>
<script src="../test.js"></script>

Loading…
Cancel
Save