Set up javascript tests

pull/498/head
Alinson S. Xavier 7 years ago
parent fe219b5296
commit 7ba7edb7d4

@ -26,16 +26,27 @@ repositories {
} }
kotlin { kotlin {
jvm()
js()
targets { targets {
def sdkName = System.getenv('SDK_NAME') def sdkName = System.getenv('SDK_NAME')
def isIphone = sdkName?.startsWith("iphoneos") def isIphone = sdkName?.startsWith("iphoneos")
def iosPreset = isIphone ? presets.iosArm64 : presets.iosX64 def iosPreset = isIphone ? presets.iosArm64 : presets.iosX64
fromPreset(iosPreset, 'ios') { fromPreset(iosPreset, 'ios') {
compilations.main.outputKinds('FRAMEWORK') compilations.main.outputKinds('FRAMEWORK')
} }
fromPreset(presets.jvm, 'jvm') {
}
fromPreset(presets.js, 'js') {
compilations.main.kotlinOptions {
moduleKind = "commonjs"
}
compilations.test.kotlinOptions {
moduleKind = "commonjs"
}
}
} }
sourceSets { sourceSets {

@ -0,0 +1 @@
org.gradle.parallel=true

@ -22,48 +22,44 @@ package org.isoron.uhabits.models
import org.isoron.platform.time.* import org.isoron.platform.time.*
import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_MANUAL import org.isoron.uhabits.models.Checkmark.Companion.CHECKED_MANUAL
import org.isoron.uhabits.models.Frequency.Companion.DAILY import org.isoron.uhabits.models.Frequency.Companion.DAILY
import org.isoron.uhabits.models.HabitType.*
import org.isoron.uhabits.models.ScoreList.Companion.compute import org.isoron.uhabits.models.ScoreList.Companion.compute
import org.junit.Assert.*
import org.junit.Test
import java.lang.Math.*
import kotlin.test.* import kotlin.test.*
class ScoreListTest { class ScoreListTest {
val epsilon = 1e-6
val today = LocalDate(2019, 1, 1) val today = LocalDate(2019, 1, 1)
@Test @Test
fun `compute with daily habit`() { fun computeWithDailyHabit() {
val freq = DAILY val freq = DAILY
var check = 1 var check = 1
assertEquals(compute(freq, 0.0, check), 0.051922, epsilon) assertEquals(compute(freq, 0.0, check), 0.051922)
assertEquals(compute(freq, 0.5, check), 0.525961, epsilon) assertEquals(compute(freq, 0.5, check), 0.525961)
assertEquals(compute(freq, 0.75, check), 0.762980, epsilon) assertEquals(compute(freq, 0.75, check), 0.762980)
check = 0 check = 0
assertEquals(compute(freq, 0.0, check), 0.0, epsilon) assertEquals(compute(freq, 0.0, check), 0.0)
assertEquals(compute(freq, 0.5, check), 0.474039, epsilon) assertEquals(compute(freq, 0.5, check), 0.474038)
assertEquals(compute(freq, 0.75, check), 0.711058, epsilon) assertEquals(compute(freq, 0.75, check), 0.711058)
} }
@Test @Test
fun `compute with non-daily habit`() { fun computeWithNonDailyHabit() {
var check = 1 var check = 1
val freq = Frequency(1, 3) val freq = Frequency(1, 3)
assertEquals(compute(freq, 0.0, check), 0.017615, epsilon) assertEquals(compute(freq, 0.0, check), 0.017615)
assertEquals(compute(freq, 0.5, check), 0.508807, epsilon) assertEquals(compute(freq, 0.5, check), 0.508807)
assertEquals(compute(freq, 0.75, check), 0.754404, epsilon) assertEquals(compute(freq, 0.75, check), 0.754403)
check = 0 check = 0
assertEquals(compute(freq, 0.0, check), 0.0, epsilon) assertEquals(compute(freq, 0.0, check), 0.0)
assertEquals(compute(freq, 0.5, check), 0.491192, epsilon) assertEquals(compute(freq, 0.5, check), 0.491192)
assertEquals(compute(freq, 0.75, check), 0.736788, epsilon) assertEquals(compute(freq, 0.75, check), 0.736788)
} }
@Test @Test
fun `getValueUntil with boolean habit`() { fun getValueUntilWithBooleanHabit() {
val checks = CheckmarkList(DAILY, BOOLEAN_HABIT) val checks = CheckmarkList(DAILY,
HabitType.BOOLEAN_HABIT)
checks.setManualCheckmarks((0..19).map { checks.setManualCheckmarks((0..19).map {
Checkmark(today.minus(it), CHECKED_MANUAL) Checkmark(today.minus(it), CHECKED_MANUAL)
}) })
@ -89,6 +85,7 @@ class ScoreListTest {
Score(today.minus(17), 0.147818), Score(today.minus(17), 0.147818),
Score(today.minus(18), 0.101148), Score(today.minus(18), 0.101148),
Score(today.minus(19), 0.051922)) Score(today.minus(19), 0.051922))
assertEquals(expected, actual) assertEquals(expected, actual)
} }
} }

@ -0,0 +1,6 @@
{
"presets": [
["env", { "modules": false }],
"react"
]
}

@ -0,0 +1,26 @@
test_bundle := build/bundles/test.js
node_modules := node_modules/.bin/mocha
$(node_modules):
npm install
core:
cd ../core; ./gradlew --quiet jsMainClasses jsTestClasses
cp ../core/build/classes/kotlin/js/*/*.js node_modules/
$(test_bundle): test/index.js core
mkdir -p build/bundles
npx webpack $< --silent --mode production --output $@
test: $(test_bundle) $(node_modules)
mkdir -p build/reports
npx mocha $@ --reporter xunit > build/reports/tests.xml
npx mocha $@
clean:
rm -rf build
distclean: clean
rm -rf node_modules
.PHONY: test clean distclean core

5530
web/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,30 @@
{
"name": "loop-habit-tracker",
"version": "2.0.0",
"description": "App for creating and maintaining good habits",
"repository": {
"type": "git",
"url": "git@github.com:iSoron/uhabits.git"
},
"main": "index.js",
"scripts": {
"compile": "webpack",
"test": "mocha"
},
"keywords": [],
"author": "",
"license": "GPL-3.0-or-later",
"dependencies": {
"babel-core": "^6.26.3",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"kotlin": "^1.3.21",
"kotlin-test": "^1.3.21"
},
"devDependencies": {
"babel-loader": "^7.1.5",
"mocha": "^6.1.0",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0"
}
}

@ -0,0 +1 @@
console.log('Hello World!');

@ -0,0 +1,2 @@
var assert = require('assert');
var coreTest = require('core_test');
Loading…
Cancel
Save