Skip to content

Commit 6b8e703

Browse files
committed
Add new kotlin project with ported client tests
1 parent 49ceef1 commit 6b8e703

File tree

19 files changed

+4879
-6
lines changed

19 files changed

+4879
-6
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
apply plugin: 'com.android.library'
2+
apply plugin: 'kotlin-android'
3+
4+
android {
5+
compileSdkVersion 23
6+
buildToolsVersion "23.0.2"
7+
8+
defaultConfig {
9+
minSdkVersion 16
10+
targetSdkVersion 23
11+
versionCode 1
12+
versionName "1.0"
13+
}
14+
buildTypes {
15+
release {
16+
minifyEnabled false
17+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18+
}
19+
}
20+
sourceSets {
21+
main.java.srcDirs += 'src/main/kotlin'
22+
}
23+
}
24+
25+
dependencies {
26+
compile fileTree(dir: 'libs', include: ['*.jar'])
27+
testCompile 'junit:junit:4.12'
28+
compile 'com.android.support:appcompat-v7:23.1.1'
29+
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
30+
compile project(':android')
31+
}
32+
buildscript {
33+
ext.kotlin_version = '1.0.0-beta-3594'
34+
repositories {
35+
mavenCentral()
36+
}
37+
dependencies {
38+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
39+
}
40+
}
41+
repositories {
42+
mavenCentral()
43+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id=":kotlin" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="AndroidClient" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android-gradle" name="Android-Gradle">
5+
<configuration>
6+
<option name="GRADLE_PROJECT_PATH" value=":kotlin" />
7+
</configuration>
8+
</facet>
9+
<facet type="android" name="Android">
10+
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
13+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
14+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
16+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
17+
<afterSyncTasks>
18+
<task>generateDebugAndroidTestSources</task>
19+
<task>generateDebugSources</task>
20+
</afterSyncTasks>
21+
<option name="ALLOW_USER_CONFIGURATION" value="false" />
22+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
23+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
24+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
25+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
26+
<option name="LIBRARY_PROJECT" value="true" />
27+
</configuration>
28+
</facet>
29+
</component>
30+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
31+
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
32+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
33+
<exclude-output />
34+
<content url="file://$MODULE_DIR$">
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/debugAndroidTest" isTestSource="true" generated="true" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
44+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
45+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
46+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
47+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
48+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
66+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
67+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
68+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
69+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
70+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
71+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
72+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
73+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/jars" />
78+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
83+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
86+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
89+
</content>
90+
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
91+
<orderEntry type="sourceFolder" forTests="false" />
92+
<orderEntry type="library" exported="" name="gson-2.3.1" level="project" />
93+
<orderEntry type="library" exported="" name="support-v4-23.1.1" level="project" />
94+
<orderEntry type="library" exported="" name="kotlin-runtime-1.0.0-beta-3594" level="project" />
95+
<orderEntry type="library" exported="" name="kotlin-stdlib-1.0.0-beta-3594" level="project" />
96+
<orderEntry type="library" exported="" name="support-annotations-23.1.1" level="project" />
97+
<orderEntry type="library" exported="" name="appcompat-v7-23.1.1" level="project" />
98+
<orderEntry type="module" module-name="android" exported="" />
99+
<orderEntry type="module" module-name="client" exported="" />
100+
</component>
101+
</module>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in C:\Users\mythz\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package test.servicestack.net.kotlinapp
2+
3+
import android.app.Application
4+
import android.test.ApplicationTestCase
5+
import com.google.gson.Gson
6+
import junit.framework.Assert
7+
import net.servicestack.android.AndroidLogProvider
8+
import net.servicestack.client.Log
9+
import test.servicestack.net.kotlin.techstacks.Technology
10+
import test.servicestack.net.kotlin.techstacks.TechnologyTier
11+
12+
/**
13+
* [Testing Fundamentals](http://d.android.com/tools/testing/testing_android.html)
14+
*/
15+
class ApplicationTest : ApplicationTestCase<Application>(Application::class.java) {
16+
17+
override fun setUp() {
18+
super.setUp()
19+
Log.Instance = AndroidLogProvider("ZZZ");
20+
}
21+
22+
fun test_Fail() {
23+
Assert.assertTrue(true)
24+
}
25+
26+
fun test_Can_Serialize_Technology(){
27+
val dto = Technology();
28+
dto.Name = "Test";
29+
dto.Tier = TechnologyTier.ProgrammingLanguage;
30+
31+
var gson = Gson()
32+
33+
val json = gson.toJson(dto);
34+
35+
Log.d("JSON: $json")
36+
37+
val fromJson = gson.fromJson(json, Technology::class.java)
38+
39+
Log.d("Name: ${fromJson.Name}, Tier: ${fromJson.Tier}")
40+
}
41+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Copyright (c) 2015 ServiceStack LLC. All rights reserved.
2+
3+
package test.servicestack.net.kotlin.checkweb
4+
5+
import com.google.gson.Gson
6+
7+
import java.util.ArrayList
8+
9+
import junit.framework.TestCase
10+
import test.servicestack.net.kotlin.checkweb.HelloResponse
11+
12+
class GsonTests : TestCase() {
13+
14+
fun test_Gson() {
15+
println("=========== HELLO JSON ============")
16+
17+
val json = "{\n" +
18+
" \"posts\": [\n" +
19+
" {\n" +
20+
" \"post\": {\n" +
21+
" \"username\": \"John\",\n" +
22+
" \"message\": \"I'm back\",\n" +
23+
" \"time\": \"2010-5-6 7:00:34\"\n" +
24+
" }\n" +
25+
" },\n" +
26+
" {\n" +
27+
" \"post\": {\n" +
28+
" \"username\": \"Smith\",\n" +
29+
" \"message\": \"I've been waiting\",\n" +
30+
" \"time\": \"2010-4-6 10:30:26\"\n" +
31+
" }\n" +
32+
" }\n" +
33+
" ]\n" +
34+
"}";
35+
36+
val gson = Gson()
37+
val list = gson.fromJson(json, PostList::class.java)
38+
39+
println("JSON: " + gson.toJson(list))
40+
}
41+
42+
inner class PostList {
43+
internal val postContainterList: List<PostContainer> = ArrayList()
44+
}
45+
46+
internal inner class PostContainer {
47+
var post: Posts? = null
48+
}
49+
50+
inner class Posts {
51+
internal var message: String? = null
52+
internal var time: String? = null
53+
internal var username: String? = null
54+
}
55+
56+
class dto {
57+
class Foo {
58+
internal var fooId: Int? = null
59+
internal var fooName: String? = null
60+
}
61+
62+
class Bar {
63+
internal var barId: Int? = null
64+
internal var barName: String? = null
65+
internal var foo: Foo? = null
66+
}
67+
}
68+
69+
internal inner class NestedPojo {
70+
var foo: dto.Foo? = null
71+
var bar: dto.Bar? = null
72+
var version: Int? = 1
73+
}
74+
75+
internal inner class NestedList : ArrayList<NestedPojo>()
76+
interface MetadataTestChild {
77+
companion object {
78+
val name: String? = null
79+
}
80+
// ArrayList<MetadataTestNestedChild> results;
81+
}
82+
83+
fun test_Can_serialize_nested_classes() {
84+
var o = NestedPojo()
85+
o.foo = dto.Foo()
86+
o.foo?.fooId = 1
87+
o.foo?.fooName = "foo"
88+
89+
o.bar = dto.Bar()
90+
o.bar?.barId = 2
91+
o.bar?.barName = "bar"
92+
93+
val list = ArrayList<NestedPojo>()
94+
list.add(o)
95+
list.add(o)
96+
list.add(o)
97+
98+
val gson = Gson()
99+
println("JSON LIST: " + gson.toJson(list))
100+
101+
val a = NestedPojo::class.java
102+
}
103+
104+
fun test_Can_deserialize_Hello() {
105+
val json = "{\"Result\":\"World\"}\n"
106+
107+
val gson = Gson()
108+
109+
val response = gson.fromJson<HelloResponse>(json, HelloResponse::class.java)
110+
111+
assertEquals("World", response.Result)
112+
}
113+
}

0 commit comments

Comments
 (0)