Skip to content

Commit

Permalink
Improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcinMoskala committed Feb 7, 2017
1 parent 28df4b3 commit f36e71f
Show file tree
Hide file tree
Showing 16 changed files with 551 additions and 401 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package activitystarter.compiler
fun <T> List<T>.createSublists(isSplitter: (T) -> Boolean): List<List<T>> = when {
size == 0 -> listOf(listOf())
none { isSplitter(it) } -> listOf(this)
size == 1 -> listOf(listOf(first()), listOf())
isSplitter(first()) -> sublistFromRest<T>(isSplitter)
.flatMap { listOf(it, listOf(first()) + it) }
size == 1 -> listOf(this, listOf())
isSplitter(last()) -> sublistFromRest(isSplitter)
.flatMap { listOf(it + last(), it) }
else -> sublistFromRest(isSplitter)
.map { listOf(first()) + it }
.map { it + last() }
}

private fun <T> List<T>.sublistFromRest(isSplitter: (T) -> Boolean) = drop(1).createSublists(isSplitter)
private fun <T> List<T>.sublistFromRest(isSplitter: (T) -> Boolean) = dropLast(1).createSublists(isSplitter)
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ class DifferentVariantsFunKtTest {
assertEquals(listOf(listOf<Int>()), listOf<Int>().createSublists { it % 2 == 0 })
}

@Test
fun testOrderCreateSublists() {
assertEquals(listOf(listOf(1,2),listOf(1),listOf(2), listOf()), listOf(1,2).createSublists { true })
}

@Test
fun testCreateSublists() {
assertEquals(setOf(listOf(1, 2, 3), listOf(1, 3)), listOf(1, 2, 3).createSublists { it % 2 == 0 }.toSet())
Expand Down
195 changes: 15 additions & 180 deletions activitystarter/src/test/java/activitystarter/ActivityGenerationTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,196 +6,31 @@ class ActivityGenerationTest: GenerationTest() {

@Test
fun simpleGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainActivity" to """
package com.example.activitystarter;
import android.app.Activity;
import activitystarter.MakeActivityStarter;
@MakeActivityStarter
public class MainActivity extends Activity {}
"""

val afterProcess = "com.example.activitystarter.MainActivityStarter" to """
// Generated code from ActivityStarter. Do not modify!
package com.example.activitystarter;
import android.content.Context;
import android.content.Intent;
public final class MainActivityStarter {
public static void fill(MainActivity activity) {
}
public static Intent getIntent(Context context) {
Intent intent = new Intent(context, MainActivity.class);
return intent;
}
public static void start(Context context) {
Intent intent = getIntent(context);
context.startActivity(intent);
}
public static void startWithFlags(Context context, int flags) {
Intent intent = getIntent(context);
intent.addFlags(flags);
context.startActivity(intent);
}
}
"""

processingComparator(beforeProcess, afterProcess)
filePrecessingComparator("activity/EmptyAnnotated")
}

@Test
fun singleArgGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainActivity" to """
package com.example.activitystarter;
import android.app.Activity;
import activitystarter.Arg;
public class MainActivity extends Activity {
@Arg String name;
}
"""

val afterProcess = "com.example.activitystarter.MainActivityStarter" to """
// Generated code from ActivityStarter. Do not modify!
package com.example.activitystarter;
import android.content.Context;
import android.content.Intent;
import java.lang.String;
public final class MainActivityStarter {
public static void fill(MainActivity activity) {
Intent intent = activity.getIntent();
if(intent.hasExtra("nameStarterKey")) activity.name = intent.getStringExtra("nameStarterKey");
}
public static Intent getIntent(Context context, String name) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("nameStarterKey", name);
return intent;
}
public static void start(Context context, String name) {
Intent intent = getIntent(context, name);
context.startActivity(intent);
}
public static void startWithFlags(Context context, String name, int flags) {
Intent intent = getIntent(context, name);
intent.addFlags(flags);
context.startActivity(intent);
}
}
""".trimMargin()

processingComparator(beforeProcess, afterProcess)
filePrecessingComparator("activity/SimpleGeneration")
}

@Test
fun optionalArgGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainActivity" to """
package com.example.activitystarter;
import android.app.Activity;
import activitystarter.Arg;
import activitystarter.Optional;
public class MainActivity extends Activity {
@Arg @Optional String name;
@Arg @Optional int id;
}
"""

val afterProcess = "com.example.activitystarter.MainActivityStarter" to """
package com.example.activitystarter;
import android.content.Context;
import android.content.Intent;
import java.lang.String;
public final class MainActivityStarter {
public static void fill(MainActivity activity) {
Intent intent = activity.getIntent();
if(intent.hasExtra("nameStarterKey")) activity.name = intent.getStringExtra("nameStarterKey");
if(intent.hasExtra("idStarterKey")) activity.id = intent.getIntExtra("idStarterKey", -1);
}
public static Intent getIntent(Context context, int id) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("idStarterKey", id);
return intent;
}
public static void start(Context context, int id) {
Intent intent = getIntent(context, id);
context.startActivity(intent);
}
public static void startWithFlags(Context context, int id, int flags) {
Intent intent = getIntent(context, id);
intent.addFlags(flags);
context.startActivity(intent);
}
public static Intent getIntent(Context context, String name, int id) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("nameStarterKey", name);
intent.putExtra("idStarterKey", id);
return intent;
}
public static void start(Context context, String name, int id) {
Intent intent = getIntent(context, name, id);
context.startActivity(intent);
}
public static void startWithFlags(Context context, String name, int id, int flags) {
Intent intent = getIntent(context, name, id);
intent.addFlags(flags);
context.startActivity(intent);
}
public static Intent getIntent(Context context) {
Intent intent = new Intent(context, MainActivity.class);
return intent;
}
public static void start(Context context) {
Intent intent = getIntent(context);
context.startActivity(intent);
}
public static void startWithFlags(Context context, int flags) {
Intent intent = getIntent(context);
intent.addFlags(flags);
context.startActivity(intent);
}
public static Intent getIntent(Context context, String name) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("nameStarterKey", name);
return intent;
}
filePrecessingComparator("activity/Optional")
}

public static void start(Context context, String name) {
Intent intent = getIntent(context, name);
context.startActivity(intent);
}
@Test
fun multipleOptionalArgGenerationTest() {
filePrecessingComparator("activity/MultipleOptional")
}

public static void startWithFlags(Context context, String name, int flags) {
Intent intent = getIntent(context, name);
intent.addFlags(flags);
context.startActivity(intent);
}
}
""".trimMargin()
@Test
fun conflictedOptionalArgGenerationTest() {
filePrecessingComparator("activity/ConflictedOptional")
}

processingComparator(beforeProcess, afterProcess)
@Test
fun allGenerationTest() {
dirPrecessingComparator("activity")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,134 +14,21 @@ class FragmentGenerationTest: GenerationTest() {

@Test
fun simpleGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainFragment" to """
package com.example.activitystarter;
import android.app.Fragment;
import activitystarter.MakeActivityStarter;
@MakeActivityStarter
public class MainFragment extends Fragment {}
"""

val afterProcess = "com.example.activitystarter.MainFragmentStarter" to """
package com.example.activitystarter;
public final class MainFragmentStarter {
public static void fill(MainFragment fragment) {
}
public static MainFragment newInstance() {
MainFragment fragment = new MainFragment();
return fragment;
}
}
"""

processingComparator(beforeProcess, afterProcess)
filePrecessingComparator("fragment/EmptyAnnotated")
}

@Test
fun singleArgGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainFragment" to """
package com.example.activitystarter;
import android.app.Fragment;
import activitystarter.Arg;
public class MainFragment extends Fragment {
@Arg String name;
}
"""

val afterProcess = "com.example.activitystarter.MainFragmentStarter" to """
package com.example.activitystarter;
import android.os.Bundle;
import java.lang.String;
public final class MainFragmentStarter {
public static void fill(MainFragment fragment) {
Bundle arguments = fragment.getArguments();
if(arguments.containsKey("nameStarterKey")) fragment.name = arguments.getString("nameStarterKey");
}
public static MainFragment newInstance(String name) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putString("nameStarterKey", name);
fragment.setArguments(args);
return fragment;
}
}
""".trimMargin()

processingComparator(beforeProcess, afterProcess)
filePrecessingComparator("fragment/SimpleGeneration")
}

@Test
fun optionalArgGenerationTest() {
val beforeProcess = "com.example.activitystarter.MainFragment" to """
package com.example.activitystarter;
import android.app.Fragment;
import activitystarter.Arg;
import activitystarter.Optional;
public class MainFragment extends Fragment {
@Arg @Optional String name;
@Arg @Optional int id;
}
"""

val afterProcess = "com.example.activitystarter.MainFragmentStarter" to """
package com.example.activitystarter;
import android.os.Bundle;
import java.lang.String;
public final class MainFragmentStarter {
public static void fill(MainFragment fragment) {
Bundle arguments = fragment.getArguments();
if(arguments.containsKey("nameStarterKey")) fragment.name = arguments.getString("nameStarterKey");
if(arguments.containsKey("idStarterKey")) fragment.id = arguments.getInt("idStarterKey", -1);
}
public static MainFragment newInstance(int id) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putInt("idStarterKey", id);
fragment.setArguments(args);
return fragment;
}
public static MainFragment newInstance(String name, int id) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putString("nameStarterKey", name);
args.putInt("idStarterKey", id);
fragment.setArguments(args);
return fragment;
}
public static MainFragment newInstance() {
MainFragment fragment = new MainFragment();
return fragment;
}
public static MainFragment newInstance(String name) {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
args.putString("nameStarterKey", name);
fragment.setArguments(args);
return fragment;
}
}
""".trimMargin()
fun multipleOptionalArgGenerationTest() {
filePrecessingComparator("fragment/MultipleOptional")
}

processingComparator(beforeProcess, afterProcess)
@Test
fun allGenerationTest() {
dirPrecessingComparator("fragment")
}
}

0 comments on commit f36e71f

Please sign in to comment.