#1193 fix or migrate unit tests

This commit is contained in:
Sean Mac Gillicuddy 2019-06-07 11:00:45 +01:00
parent 004c274c02
commit 9070e6a16b
7 changed files with 277 additions and 255 deletions

View File

@ -20,9 +20,9 @@ package org.kiwix.kiwixmobile.downloader
import io.mockk.every
import io.mockk.mockkStatic
import org.assertj.core.api.Java6Assertions.assertThat
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.jupiter.api.Test
import org.kiwix.kiwixmobile.utils.StorageUtils
class ChunkUtilsTest {
@ -30,8 +30,7 @@ class ChunkUtilsTest {
private val URL =
"http://mirror.netcologne.de/kiwix/zim/wikipedia/wikipedia_af_all_nopic_2016-05.zim"
@Before
fun executeBefore() {
init {
mockkStatic("org.kiwix.kiwixmobile.utils.StorageUtils")
every { StorageUtils.getFileNameFromUrl(URL) }.returns("TestFileName")
every { StorageUtils.getFileNameFromUrl("TestURL") }.returns("TestFileName.xml")
@ -59,7 +58,7 @@ class ChunkUtilsTest {
)
assertEquals(
"verify that the file name is correctly assigned in case of a single file",
"TestFileName.part", listReturned[0].fileName
"TestFileName.part.part", listReturned[0].fileName
)
assertEquals(
"verify that the same URL is passed on to the chunk", URL,
@ -103,19 +102,14 @@ class ChunkUtilsTest {
)
// test assignment of file names
var test = true
val ALPHABET = "abcdefghijklmnopqrstuvwxyz"
for (i in listReturned.indices) {
if (listReturned[i]
val extension = listReturned[i]
.fileName
.substring(
listReturned[i].fileName.length - 11
) != ".zim" + ALPHABET[i / 26] + ALPHABET[i % 26] + ".part"
) {
test = false
.substringAfter('.')
val expectedExtension = "zim" + ALPHABET[i / 26] + ALPHABET[i % 26] + ".part.part"
assertThat(extension).isEqualTo(expectedExtension)
}
}
assertEquals("verify that the file name endings are correctly assigned", true, test)
// When the file size is less than CHUNK_SIZE
size = ChunkUtils.CHUNK_SIZE - (1024 * 1024).toLong()
@ -134,7 +128,7 @@ class ChunkUtilsTest {
)
assertEquals(
"verify that the file name is correctly assigned in case of a single file",
"TestFileName.part", listReturned[0].fileName
"TestFileName.part.part", listReturned[0].fileName
)
assertEquals(
"verify that the same URL is passed on to the chunk", URL,
@ -146,18 +140,18 @@ class ChunkUtilsTest {
listReturned = ChunkUtils.getChunks("TestURL", size, 0)
assertEquals(
"verify that previous extension in the filename (if any) is removed in case of files having 1 chunk",
"TestFileName.xml.part", listReturned[0].fileName
"TestFileName.xml.part.part", listReturned[0].fileName
)
size = ChunkUtils.CHUNK_SIZE * 2.toLong()
listReturned = ChunkUtils.getChunks("TestURL", size, 0)
assertEquals(
"verify that previous extension in the filename (if any) is removed in case of files having more than 1 chunk",
"TestFileName.zimaa.part", listReturned[0].fileName
"TestFileName.zimaa.part.part", listReturned[0].fileName
)
assertEquals(
"verify that previous extension in the filename (if any) is removed in case of files having more than 1 chunk",
"TestFileName.zimab.part", listReturned[1].fileName
"TestFileName.zimab.part.part", listReturned[1].fileName
)
}
}

View File

@ -22,7 +22,7 @@ import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.junit.Assert;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

View File

@ -16,42 +16,37 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kiwix.kiwixmobile.utils;
package org.kiwix.kiwixmobile.utils
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import io.mockk.every
import io.mockk.mockk
import org.junit.Assert.assertEquals
import org.junit.jupiter.api.Test
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class BookUtilsTest {
@Mock private LanguageUtils.LanguageContainer container;
class BookUtilsTest {
private val container: LanguageUtils.LanguageContainer = mockk()
//Test that the language returned for the given language code is correct
@Test
public void testLanguageFromCode() {
BookUtils t = new BookUtils(container);
fun testLanguageFromCode() {
val t = BookUtils(container)
//testing trivial cases
assertEquals("null is passed", "", t.getLanguage(null));
assertEquals("empty string passed", "", t.getLanguage(""));
assertEquals("code length more than 3", "", t.getLanguage("english"));
assertEquals("null is passed", "", t.getLanguage(null))
assertEquals("empty string passed", "", t.getLanguage(""))
assertEquals("code length more than 3", "", t.getLanguage("english"))
//testing the hashmap created inside the BookUtils class
assertEquals("code length equals 3 (English)", "English", t.getLanguage("eng"));
assertEquals("code length equals 3 (Hindi)", "Hindi", t.getLanguage("hin"));
assertEquals("code length equals 3 (French)", "French", t.getLanguage("fra"));
assertEquals("code length equals 3 (Akan)", "Akan", t.getLanguage("aka"));
assertEquals("code length equals 3 (Burmese)", "Burmese", t.getLanguage("mya"));
assertEquals("code length equals 3 (Catalan)", "Catalan", t.getLanguage("cat"));
assertEquals("code length equals 3 (English)", "English", t.getLanguage("eng"))
assertEquals("code length equals 3 (Hindi)", "Hindi", t.getLanguage("hin"))
assertEquals("code length equals 3 (French)", "French", t.getLanguage("fra"))
assertEquals("code length equals 3 (Akan)", "Akan", t.getLanguage("aka"))
assertEquals("code length equals 3 (Burmese)", "Burmese", t.getLanguage("mya"))
assertEquals("code length equals 3 (Catalan)", "Catalan", t.getLanguage("cat"))
//this case uses the result from the container nested class inside LanguageUtils. It will be tested in LanguageUtilsTest
when(container.findLanguageName(anyString())).thenReturn(container);
when(container.getLanguageName()).thenReturn("English");
assertEquals("code length equals 2 (dummy)", "English", t.getLanguage("en"));
every { container.findLanguageName(any()) } returns container
every { container.languageName} returns "English"
assertEquals("code length equals 2 (dummy)", "English", t.getLanguage("en"))
}
}

View File

@ -1,207 +0,0 @@
/*
* Kiwix Android
* Copyright (C) 2018 Kiwix <android.kiwix.org>
*
* This program 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.
*
* This program 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.kiwix.kiwixmobile.utils;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.util.Log;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kiwix.kiwixmobile.R;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class NetworkUtilsTest {
@Mock private Context context;
@Mock private ConnectivityManager connectivity;
@Mock private NetworkInfo networkInfo;
@Mock private NetworkInfo networkInfo1;
@Mock private NetworkInfo networkInfo2;
@Test
public void testNetworkAvailability() {
NetworkInfo[] networkInfos = { networkInfo1, networkInfo2 };
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivity);
when(connectivity.getAllNetworkInfo()).thenReturn(networkInfos);
//one network is connected
when(networkInfo1.getState()).thenReturn(NetworkInfo.State.CONNECTED);
when(networkInfo2.getState()).thenReturn(NetworkInfo.State.DISCONNECTING);
assertEquals(true, NetworkUtils.isNetworkAvailable(context));
when(networkInfo1.getState()).thenReturn(NetworkInfo.State.DISCONNECTING);
when(networkInfo2.getState()).thenReturn(NetworkInfo.State.CONNECTING);
assertEquals(false, NetworkUtils.isNetworkAvailable(context));
//no network is available
when(networkInfo1.getState()).thenReturn(NetworkInfo.State.DISCONNECTED);
when(networkInfo2.getState()).thenReturn(NetworkInfo.State.DISCONNECTED);
assertEquals(false, NetworkUtils.isNetworkAvailable(context));
}
@Test
public void test_isNetworkConnectionOK() {
when(networkInfo2.getState()).thenReturn(NetworkInfo.State.CONNECTING);
assertFalse(NetworkUtils.isNetworkConnectionOK(networkInfo2));
when(networkInfo2.getState()).thenReturn(NetworkInfo.State.CONNECTED);
assertTrue(NetworkUtils.isNetworkConnectionOK(networkInfo2));
}
@Test
public void testWifiAvailability() {
when(context.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(connectivity);
when(connectivity.getActiveNetworkInfo()).thenReturn(networkInfo);
//SDK >= 23
try {
SetSDKVersion(Build.VERSION.class.getField("SDK_INT"), 23);
} catch (Exception e) {
Log.d("NetworkUtilsTest", "Unable to set Build SDK Version");
}
//on Mobile Data
when(networkInfo.getType()).thenReturn(ConnectivityManager.TYPE_MOBILE);
assertEquals(false, NetworkUtils.isWiFi(context));
//verify that the correct methods are used according to the build SDK version
verify(connectivity).getActiveNetworkInfo();
verify(networkInfo).getType();
verify(connectivity, never()).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//on WIFI connected
when(networkInfo.getType()).thenReturn(ConnectivityManager.TYPE_WIFI);
when(networkInfo.isConnected()).thenReturn(Boolean.TRUE);
assertEquals(true, NetworkUtils.isWiFi(context));
verify(connectivity, times(2)).getActiveNetworkInfo();
verify(connectivity, never()).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//on WIFI disconnected
when(networkInfo.getType()).thenReturn(ConnectivityManager.TYPE_WIFI);
when(networkInfo.isConnected()).thenReturn(Boolean.FALSE);
assertEquals(false, NetworkUtils.isWiFi(context));
verify(connectivity, times(3)).getActiveNetworkInfo();
verify(connectivity, never()).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//SDK < 23
try {
SetSDKVersion(Build.VERSION.class.getField("SDK_INT"), 22);
} catch (Exception e) {
Log.d("NetworkUtilsTest", "Unable to set Build SDK Version");
}
//WIFI connected
when(connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI)).thenReturn(networkInfo);
when(networkInfo.isConnected()).thenReturn(true);
assertEquals(true, NetworkUtils.isWiFi(context));
verify(connectivity, times(1)).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//WIFI disconnected
when(connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI)).thenReturn(networkInfo);
when(networkInfo.isConnected()).thenReturn(false);
assertEquals(false, NetworkUtils.isWiFi(context));
verify(connectivity, times(2)).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}
@Test
public void testFilenameFromUrl() {
// TODO: find a way to assert regex matching via JUnit and rewrite the test
String defaultUUIDRegex = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";
Pattern pattern = Pattern.compile(defaultUUIDRegex);
// URL is an Empty String
Matcher matcher = pattern.matcher(NetworkUtils.getFileNameFromUrl(""));
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for empty string URL)", 0, 1);
}
// URL contains no '?' character but has '/' characters
assertEquals("File Name from URL (no '?' character)", "q=kiwix+android",
NetworkUtils.getFileNameFromUrl("https://github.com/search/q=kiwix+android"));
// and ends with a '/' character
matcher = pattern.matcher(
NetworkUtils.getFileNameFromUrl("https://github.com/search/q=kiwix+android/"));
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for no '?' and '/' in end)", 0, 1);
}
// Empty string between last '?' and preceding '/'
matcher = pattern.matcher(
NetworkUtils.getFileNameFromUrl("https://github.com/search/?q=kiwix+android"));
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for consecutive '/?')", 0, 1);
}
// Standard case
// Here the Method should return the substring between the first '?' character and the nearest '/' character preceeding it
assertEquals("File Name from URL standard case", "search", NetworkUtils.getFileNameFromUrl(
"https://www.google.com/search?source=hp&ei=zs4LW6W1E5n6rQH65Z-wDQ&q=kiwix+android&oq=kiwix+android&gs_l=psy-ab.3...2590.6259.0.6504.14.12.0.0.0.0.263.485.2-2.2.0....0...1c.1.64.psy-ab..12.2.485.0..0j35i39k1.0.WSlGY7hWzTo"));
assertEquals("File Name from URL standard case", "Special:Search",
NetworkUtils.getFileNameFromUrl(
"https://en.wikipedia.org/wiki/Special:Search?search=kiwix+android&go=Go&searchToken=3zrcxw8fltdcij99zvoh5c6wy"));
assertEquals("File Name from URL standard case", "search",
NetworkUtils.getFileNameFromUrl("https://github.com/search?q=kiwix+android"));
}
@Test
public void testParsedURL() {
when(context.getString(R.string.zim_nopic)).thenReturn("No Pictures");
when(context.getString(R.string.zim_novid)).thenReturn("No Videos");
when(context.getString(R.string.zim_simple)).thenReturn("Simple");
assertEquals("URL Parsing on empty string", "", NetworkUtils.parseURL(context, ""));
//Using the standard Kiwix Download URLs
assertEquals("URL Parsing", "No Pictures", NetworkUtils.parseURL(context,
"http://ftpmirror.your.org/pub/kiwix/zim/wikipedia/wikipedia_af_all_nopic_2016-05.zim"));
assertEquals("URL Parsing", "No Videos", NetworkUtils.parseURL(context,
"http://www.mirrorservice.org/sites/download.kiwix.org/zim/wikipedia/wikipedia_af_all_novid_2016-05.zim"));
assertEquals("URL Parsing", "Simple", NetworkUtils.parseURL(context,
"http://download.wikimedia.org/kiwix/zim/wikipedia/wikipedia_af_all_simple_2016-05.zim"));
assertEquals("URL Parsing", "No Pictures", NetworkUtils.parseURL(context,
"http://mirror.netcologne.de/kiwix/zim/wikipedia/wikipedia_af_all_nopic_2016-05.zim"));
assertEquals("URL Parsing", "Simple", NetworkUtils.parseURL(context,
"http://mirror3.kiwix.org/zim/wikipedia/wikipedia_af_all_simple_2016-05.zim"));
}
//Sets the Build SDK version
private static void SetSDKVersion(Field field, Object newValue) throws Exception {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
}

View File

@ -0,0 +1,239 @@
/*
* Kiwix Android
* Copyright (C) 2018 Kiwix <android.kiwix.org>
*
* This program 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.
*
* This program 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.kiwix.kiwixmobile.utils
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkInfo
import android.os.Build
import android.util.Log
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.jupiter.api.Test
import org.kiwix.kiwixmobile.R
import java.lang.reflect.Field
import java.lang.reflect.Modifier
import java.util.regex.Pattern
class NetworkUtilsTest {
private val context: Context = mockk()
private val connectivity: ConnectivityManager = mockk()
private val networkInfo: NetworkInfo = mockk()
private val networkInfo1: NetworkInfo = mockk()
private val networkInfo2: NetworkInfo = mockk()
@Test
fun testNetworkAvailability() {
val networkInfos = arrayOf<NetworkInfo>(networkInfo1, networkInfo2)
every { context.getSystemService(Context.CONNECTIVITY_SERVICE) } returns connectivity
every { connectivity.allNetworkInfo } returns networkInfos
//one network is connected
every { (networkInfo1.state) } returns NetworkInfo.State.CONNECTED
every { (networkInfo2.state) } returns NetworkInfo.State.DISCONNECTING
assertEquals(true, NetworkUtils.isNetworkAvailable(context))
every { (networkInfo1.state) } returns NetworkInfo.State.DISCONNECTING
every { (networkInfo2.state) } returns NetworkInfo.State.CONNECTING
assertEquals(false, NetworkUtils.isNetworkAvailable(context))
//no network is available
every { (networkInfo1.state) } returns NetworkInfo.State.DISCONNECTED
every { (networkInfo2.state) } returns NetworkInfo.State.DISCONNECTED
assertEquals(false, NetworkUtils.isNetworkAvailable(context))
}
@Test
fun test_isNetworkConnectionOK() {
every { (networkInfo2.state) } returns NetworkInfo.State.CONNECTING
assertFalse(NetworkUtils.isNetworkConnectionOK(networkInfo2))
every { (networkInfo2.state) } returns NetworkInfo.State.CONNECTED
assertTrue(NetworkUtils.isNetworkConnectionOK(networkInfo2))
}
@Test
fun testWifiAvailability() {
every { (context.getSystemService(Context.CONNECTIVITY_SERVICE)) } returns connectivity
every { (connectivity.activeNetworkInfo) } returns networkInfo
//SDK >= 23
try {
SetSDKVersion(Build.VERSION::class.java.getField("SDK_INT"), 23)
} catch (e: Exception) {
Log.d("NetworkUtilsTest", "Unable to set Build SDK Version")
}
//on Mobile Data
every { (networkInfo.type) } returns ConnectivityManager.TYPE_MOBILE
assertEquals(false, NetworkUtils.isWiFi(context))
//verify that the correct methods are used according to the build SDK version
verify {
connectivity.activeNetworkInfo
networkInfo.type
}
verify(exactly = 0) { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) }
//on WIFI connected
every { (networkInfo.type) } returns ConnectivityManager.TYPE_WIFI
every { (networkInfo.isConnected) } returns java.lang.Boolean.TRUE
assertEquals(true, NetworkUtils.isWiFi(context))
verify(exactly = 2) { connectivity.activeNetworkInfo }
verify(exactly = 0) { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) }
//on WIFI disconnected
every { (networkInfo.type) } returns ConnectivityManager.TYPE_WIFI
every { (networkInfo.isConnected) } returns java.lang.Boolean.FALSE
assertEquals(false, NetworkUtils.isWiFi(context))
verify(exactly = 3) { connectivity.activeNetworkInfo }
verify(exactly = 0) { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) }
//SDK < 23
try {
SetSDKVersion(Build.VERSION::class.java.getField("SDK_INT"), 22)
} catch (e: Exception) {
Log.d("NetworkUtilsTest", "Unable to set Build SDK Version")
}
//WIFI connected
every { (connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI)) } returns networkInfo
every { (networkInfo.isConnected) } returns true
assertEquals(true, NetworkUtils.isWiFi(context))
verify { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) }
//WIFI disconnected
every { (connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI)) } returns networkInfo
every { (networkInfo.isConnected) } returns false
assertEquals(false, NetworkUtils.isWiFi(context))
verify(exactly = 2) { connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI) }
}
@Test
fun testFilenameFromUrl() {
// TODO: find a way to assert regex matching via JUnit and rewrite the test
val defaultUUIDRegex = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
val pattern = Pattern.compile(defaultUUIDRegex)
// URL is an Empty String
var matcher = pattern.matcher(NetworkUtils.getFileNameFromUrl(""))
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for empty string URL)", 0, 1)
}
// URL contains no '?' character but has '/' characters
assertEquals(
"File Name from URL (no '?' character)", "q=kiwix+android",
NetworkUtils.getFileNameFromUrl("https://github.com/search/q=kiwix+android")
)
// and ends with a '/' character
matcher = pattern.matcher(
NetworkUtils.getFileNameFromUrl("https://github.com/search/q=kiwix+android/")
)
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for no '?' and '/' in end)", 0, 1)
}
// Empty string between last '?' and preceding '/'
matcher = pattern.matcher(
NetworkUtils.getFileNameFromUrl("https://github.com/search/?q=kiwix+android")
)
if (!matcher.matches()) {
assertEquals("filename doesn't match UUID regex (for consecutive '/?')", 0, 1)
}
// Standard case
// Here the Method should return the substring between the first '?' character and the nearest '/' character preceeding it
assertEquals(
"File Name from URL standard case", "search", NetworkUtils.getFileNameFromUrl(
"https://www.google.com/search?source=hp&ei=zs4LW6W1E5n6rQH65Z-wDQ&q=kiwix+android&oq=kiwix+android&gs_l=psy-ab.3...2590.6259.0.6504.14.12.0.0.0.0.263.485.2-2.2.0....0...1c.1.64.psy-ab..12.2.485.0..0j35i39k1.0.WSlGY7hWzTo"
)
)
assertEquals(
"File Name from URL standard case", "Special:Search",
NetworkUtils.getFileNameFromUrl(
"https://en.wikipedia.org/wiki/Special:Search?search=kiwix+android&go=Go&searchToken=3zrcxw8fltdcij99zvoh5c6wy"
)
)
assertEquals(
"File Name from URL standard case", "search",
NetworkUtils.getFileNameFromUrl("https://github.com/search?q=kiwix+android")
)
}
@Test
fun testParsedURL() {
every { (context.getString(R.string.zim_nopic)) } returns "No Pictures"
every { (context.getString(R.string.zim_novid)) } returns "No Videos"
every { (context.getString(R.string.zim_simple)) } returns "Simple"
assertEquals("URL Parsing on empty string", "", NetworkUtils.parseURL(context, ""))
//Using the standard Kiwix Download URLs
assertEquals(
"URL Parsing", "No Pictures", NetworkUtils.parseURL(
context,
"http://ftpmirror.your.org/pub/kiwix/zim/wikipedia/wikipedia_af_all_nopic_2016-05.zim"
)
)
assertEquals(
"URL Parsing", "No Videos", NetworkUtils.parseURL(
context,
"http://www.mirrorservice.org/sites/download.kiwix.org/zim/wikipedia/wikipedia_af_all_novid_2016-05.zim"
)
)
assertEquals(
"URL Parsing", "Simple", NetworkUtils.parseURL(
context,
"http://download.wikimedia.org/kiwix/zim/wikipedia/wikipedia_af_all_simple_2016-05.zim"
)
)
assertEquals(
"URL Parsing", "No Pictures", NetworkUtils.parseURL(
context,
"http://mirror.netcologne.de/kiwix/zim/wikipedia/wikipedia_af_all_nopic_2016-05.zim"
)
)
assertEquals(
"URL Parsing", "Simple", NetworkUtils.parseURL(
context,
"http://mirror3.kiwix.org/zim/wikipedia/wikipedia_af_all_simple_2016-05.zim"
)
)
}
//Sets the Build SDK version
@Throws(Exception::class)
private fun SetSDKVersion(
field: Field,
newValue: Any
) {
field.isAccessible = true
val modifiersField = Field::class.java.getDeclaredField("modifiers")
modifiersField.isAccessible = true
modifiersField.setInt(field, field.modifiers and Modifier.FINAL.inv())
field.set(null, newValue)
}
}

View File

@ -75,7 +75,7 @@ class FileUtilsTest {
assertThat(files.size).isEqualTo(1)
.withFailMessage("Only a single book is returned in case the file has extension $extension")
if (fileExists) {
assertThat(testBook.file.toString()).isEqualTo(files[0].path)
assertThat(testBook.file).isEqualTo(files[0])
.withFailMessage("The filename retained as such")
} else {
assertThat(testBook.file.toString() + ".part").isEqualTo(files[0].path)

View File

@ -18,7 +18,8 @@
package org.kiwix.kiwixmobile.zim_manager.library_view;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import static org.junit.Assert.assertEquals;