diff --git a/.gitignore b/.gitignore
index b63da4551..19400d812 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,4 +39,76 @@ bin/
.vscode/
### Mac OS ###
-.DS_Store
\ No newline at end of file
+.DS_Store
+
+.idea/
+.idea/shelf
+/confluence/target
+/dependencies/repo
+/android.tests.dependencies
+/dependencies/android.tests.dependencies
+/dist
+/local
+/gh-pages
+/ideaSDK
+/clionSDK
+/android-studio/sdk
+/tmp
+/intellij
+workspace.xml
+*.versionsBackup
+/idea/testData/debugger/tinyApp/classes*
+/jps-plugin/testData/kannotator
+/js/js.translator/testData/out/
+/js/js.translator/testData/out-min/
+/js/js.translator/testData/out-pir/
+.gradle/
+!**/src/**/build
+!**/test/**/build
+!**/testData/**/*.iml
+.idea/remote-targets.xml
+.idea/libraries/Gradle*.xml
+.idea/libraries/Maven*.xml
+.idea/artifacts/PILL_*.xml
+.idea/artifacts/KotlinPlugin.xml
+.idea/modules
+.idea/runConfigurations/JPS_*.xml
+.idea/runConfigurations/PILL_*.xml
+.idea/runConfigurations/_FP_*.xml
+.idea/runConfigurations/_MT_*.xml
+.idea/libraries
+.idea/gradle.xml
+.idea/inspectionProfiles/profiles_settings.xml
+.idea/.name
+.idea/artifacts/dist_auto_*
+.idea/artifacts/dist.xml
+.idea/artifacts/ideaPlugin.xml
+.idea/artifacts/kotlinc.xml
+.idea/artifacts/kotlin_compiler_jar.xml
+.idea/artifacts/kotlin_plugin_jar.xml
+.idea/artifacts/kotlin_jps_plugin_jar.xml
+.idea/artifacts/kotlin_daemon_client_jar.xml
+.idea/artifacts/kotlin_imports_dumper_compiler_plugin_jar.xml
+.idea/artifacts/kotlin_main_kts_jar.xml
+.idea/artifacts/kotlin_compiler_client_embeddable_jar.xml
+.idea/artifacts/kotlin_reflect_jar.xml
+.idea/artifacts/kotlin_stdlib_js_ir_*
+.idea/artifacts/kotlin_test_js_ir_*
+.idea/artifacts/kotlin_stdlib_wasm_*
+.idea/artifacts/kotlin_test_wasm_*
+.idea/artifacts/kotlinx_atomicfu_runtime_*
+.idea/artifacts/kotlinx_cli_jvm_*
+.idea/csv-plugin.xml
+.idea/libraries-with-intellij-classes.xml
+.idea/misc.xml
+.idea/protoeditor.xml
+node_modules/
+.rpt2_cache/
+libraries/tools/kotlin-test-js-runner/lib/
+local.properties
+buildSrcTmp/
+distTmp/
+outTmp/
+/test.output
+/kotlin-native/dist
+kotlin-ide/
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d33521a..000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/codeStyles b/.idea/codeStyles
deleted file mode 100644
index ad98bfd9a..000000000
--- a/.idea/codeStyles
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/csv-plugin.xml b/.idea/csv-plugin.xml
deleted file mode 100644
index 7723404b1..000000000
--- a/.idea/csv-plugin.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index 5404067d2..000000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 495e37055..000000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7f4..000000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index f22bd8bb7..71d54e404 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -13,7 +13,9 @@ repositories {
}
dependencies {
+ implementation("org.junit.jupiter:junit-jupiter:5.8.1")
testImplementation(kotlin("test"))
+ testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
}
tasks.test {
diff --git a/lib/apiguardian-api-1.1.2.jar b/lib/apiguardian-api-1.1.2.jar
new file mode 100644
index 000000000..2b678e154
Binary files /dev/null and b/lib/apiguardian-api-1.1.2.jar differ
diff --git a/lib/hamcrest-core-1.3.jar b/lib/hamcrest-core-1.3.jar
new file mode 100644
index 000000000..9d5fe16e3
Binary files /dev/null and b/lib/hamcrest-core-1.3.jar differ
diff --git a/lib/junit-4.13.1.jar b/lib/junit-4.13.1.jar
new file mode 100644
index 000000000..b376ffc16
Binary files /dev/null and b/lib/junit-4.13.1.jar differ
diff --git a/lib/junit-jupiter-5.8.1.jar b/lib/junit-jupiter-5.8.1.jar
new file mode 100644
index 000000000..730b9ae2f
Binary files /dev/null and b/lib/junit-jupiter-5.8.1.jar differ
diff --git a/lib/junit-jupiter-api-5.8.1.jar b/lib/junit-jupiter-api-5.8.1.jar
new file mode 100644
index 000000000..8424eca3e
Binary files /dev/null and b/lib/junit-jupiter-api-5.8.1.jar differ
diff --git a/lib/junit-jupiter-engine-5.8.1.jar b/lib/junit-jupiter-engine-5.8.1.jar
new file mode 100644
index 000000000..cfa38d26a
Binary files /dev/null and b/lib/junit-jupiter-engine-5.8.1.jar differ
diff --git a/lib/junit-jupiter-params-5.8.1.jar b/lib/junit-jupiter-params-5.8.1.jar
new file mode 100644
index 000000000..1e4d0ec49
Binary files /dev/null and b/lib/junit-jupiter-params-5.8.1.jar differ
diff --git a/lib/junit-platform-commons-1.8.1.jar b/lib/junit-platform-commons-1.8.1.jar
new file mode 100644
index 000000000..20185cd63
Binary files /dev/null and b/lib/junit-platform-commons-1.8.1.jar differ
diff --git a/lib/junit-platform-engine-1.8.1.jar b/lib/junit-platform-engine-1.8.1.jar
new file mode 100644
index 000000000..54ce07669
Binary files /dev/null and b/lib/junit-platform-engine-1.8.1.jar differ
diff --git a/lib/opentest4j-1.2.0.jar b/lib/opentest4j-1.2.0.jar
new file mode 100644
index 000000000..d5006361a
Binary files /dev/null and b/lib/opentest4j-1.2.0.jar differ
diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt
index c1caa623d..1beb81fc0 100644
--- a/src/main/kotlin/Main.kt
+++ b/src/main/kotlin/Main.kt
@@ -1,22 +1,11 @@
import dataSource.CsvDataSource
import dataSource.utils.CsvParser
-import interactor.CostOfLivingDataSource
-import interactor.GetCityHasCheapestInternetConnectionInteractor
-import interactor.GetHighestSalaryAverageCititesNamesInteractor
+import interactor.*
+import ui.UserInterface
fun main() {
val csvParser = CsvParser()
val dataSource: CostOfLivingDataSource = CsvDataSource(csvParser)
-
- val getHighestSalaryAverageCities = GetHighestSalaryAverageCititesNamesInteractor(dataSource)
- println(getHighestSalaryAverageCities.execute(limit = 10))
- printSeparationLine()
-
- val getCityHasCheapestInternetConnectionInteractor = GetCityHasCheapestInternetConnectionInteractor(dataSource)
- println(getCityHasCheapestInternetConnectionInteractor.execute())
-
-}
-private fun printSeparationLine(){
- print("\n_______________________________\n")
+ UserInterface(dataSource).init()
}
diff --git a/src/main/kotlin/interactor/GetAverageFruitAndVegetablesInteractor.kt b/src/main/kotlin/interactor/GetAverageFruitAndVegetablesInteractor.kt
new file mode 100644
index 000000000..e08867a1b
--- /dev/null
+++ b/src/main/kotlin/interactor/GetAverageFruitAndVegetablesInteractor.kt
@@ -0,0 +1,28 @@
+package interactor
+
+import model.CityEntity
+
+class GetAverageFruitAndVegetablesInteractor(private val dataSource: CostOfLivingDataSource) {
+
+ operator fun invoke(limit: Int): List {
+ return dataSource
+ .getAllCitiesData()
+ .filter(::excludeNullFruitVegPriceAndNullSalaries)
+ .sortedBy(::calculateTheRatioBetweenFruitVegPriceAndSalary)
+ .take(limit)
+ .map(CityEntity::cityName)
+ }
+
+ fun excludeNullFruitVegPriceAndNullSalaries(city: CityEntity) =
+ checkNullableFruitAndVegetablePrices(city) && city.averageMonthlyNetSalaryAfterTax != null
+
+ private fun checkNullableFruitAndVegetablePrices(city: CityEntity) =
+ with(city.fruitAndVegetablesPrices) {
+ apples1kg != null && banana1kg != null && oranges1kg != null && tomato1kg != null
+ && potato1kg != null && onion1kg != null && lettuceOneHead != null
+ }
+
+ private fun calculateTheRatioBetweenFruitVegPriceAndSalary(city: CityEntity) =
+ city.fruitAndVegetablesPrices.getAverageFruitsAndVegetablesPrice() / city.averageMonthlyNetSalaryAfterTax!!
+
+}
diff --git a/src/main/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractor.kt b/src/main/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractor.kt
new file mode 100644
index 000000000..65de7fbcc
--- /dev/null
+++ b/src/main/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractor.kt
@@ -0,0 +1,50 @@
+package interactor
+
+import model.CityEntity
+
+class GetBestCitiesForBuyingSoftDrinksInteractor(private val dataSource: CostOfLivingDataSource) {
+
+ operator fun invoke(limit : Int): List {
+
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullRequireValues)
+ .takeIf { it.isNotEmpty() && limit > 0 }
+ ?.run {
+ sortedByDescending(::calculateNumberOfSoftDrinksCanBuy)
+ .take(limit)
+ } ?: throw IllegalStateException("List of cities is invalid or limit below zero")
+ }
+
+ private fun excludeNullRequireValues(city: CityEntity): Boolean {
+
+ return with(city.realEstatesPrices) {
+ apartment3BedroomsInCityCentre != null &&
+ apartment3BedroomsOutsideOfCentre != null &&
+ apartmentOneBedroomInCityCentre != null &&
+ apartmentOneBedroomOutsideOfCentre != null } &&
+ city.averageMonthlyNetSalaryAfterTax != null &&
+ city.drinksPrices.cokePepsiAThirdOfLiterBottleInRestaurants != null
+ }
+
+ private fun calculateNumberOfSoftDrinksCanBuy(city: CityEntity): Int {
+
+ return ((city.averageMonthlyNetSalaryAfterTax!! - LIVING_COST - getMinimumRealEstatesPrice(city)
+ ) / city.drinksPrices.cokePepsiAThirdOfLiterBottleInRestaurants!!).toInt()
+ }
+ private fun getMinimumRealEstatesPrice(city: CityEntity): Float {
+
+ return with(city.realEstatesPrices) {
+ minOf(
+ apartment3BedroomsInCityCentre!!,
+ apartment3BedroomsOutsideOfCentre!!,
+ apartmentOneBedroomOutsideOfCentre!!,
+ apartmentOneBedroomInCityCentre!!
+ )
+ }
+ }
+
+ private companion object {
+
+ const val LIVING_COST = 500.0f
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetBestCitiesToFashionShoppingInteractor.kt b/src/main/kotlin/interactor/GetBestCitiesToFashionShoppingInteractor.kt
new file mode 100644
index 000000000..9e398dc22
--- /dev/null
+++ b/src/main/kotlin/interactor/GetBestCitiesToFashionShoppingInteractor.kt
@@ -0,0 +1,34 @@
+package interactor
+
+import model.CityEntity
+import model.ClothesPrices
+
+
+
+class GetBestCitiesToFashionShoppingInteractor(private val dataSource: CostOfLivingDataSource) {
+
+ fun execute(): List {
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullClothesBrandPrices)
+ .sortedBy {
+ it.clothesPrices.findAveragePrices()
+ }
+ .take(5)
+ .map { it.cityName }
+
+ }
+
+ private fun excludeNullClothesBrandPrices(city: CityEntity): Boolean {
+ return city.clothesPrices.oneSummerDressInAChainStoreZaraHAndM != null &&
+ city.clothesPrices.onePairOfNikeRunningShoesMidRange != null &&
+ city.clothesPrices.onePairOfJeansLevis50oneOrSimilar != null
+ }
+
+ private fun ClothesPrices.findAveragePrices(): Float {
+ return listOfNotNull(
+ onePairOfJeansLevis50oneOrSimilar,
+ oneSummerDressInAChainStoreZaraHAndM,
+ onePairOfNikeRunningShoesMidRange,
+ ).average().toFloat()
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetBestCityForSavingMoneyInteractor.kt b/src/main/kotlin/interactor/GetBestCityForSavingMoneyInteractor.kt
new file mode 100644
index 000000000..b96d7ee26
--- /dev/null
+++ b/src/main/kotlin/interactor/GetBestCityForSavingMoneyInteractor.kt
@@ -0,0 +1,45 @@
+package interactor
+
+import model.CityEntity
+
+class GetBestCityForSavingMoneyInteractor(private val dataSource: CostOfLivingDataSource) {
+
+ operator fun invoke(): CityEntity{
+
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullRequireValues)
+ .sortedByDescending(::calculateSavings)
+ .first()
+ }
+
+ private fun calculateSavings(city: CityEntity): Float {
+
+ return city.averageMonthlyNetSalaryAfterTax!! * DOUBLE_AVERAGE_SALARY -
+ city.realEstatesPrices.apartment3BedroomsInCityCentre!! -
+ with(city.foodPrices){
+ (loafOfFreshWhiteBread500g!! * REQUIRE_BREAD) -
+ (chickenFillets1kg!! * REQUIRE_CHICKEN) -
+ (riceWhite1kg!! * REQUIRE_RICE) -
+ (beefRound1kgOrEquivalentBackLegRedMeat!! * REQUIRE_MEAT) -
+ city.foodPrices.localCheese1kg!! } - OTHER_NEEDS
+ }
+ private fun excludeNullRequireValues(city: CityEntity): Boolean {
+
+ return city.realEstatesPrices.apartment3BedroomsInCityCentre != null &&
+ city.averageMonthlyNetSalaryAfterTax != null &&
+ city.foodPrices.loafOfFreshWhiteBread500g != null &&
+ city.foodPrices.localCheese1kg != null &&
+ city.foodPrices.beefRound1kgOrEquivalentBackLegRedMeat != null &&
+ city.foodPrices.chickenFillets1kg != null &&
+ city.foodPrices.riceWhite1kg != null
+ }
+ private companion object{
+
+ const val REQUIRE_BREAD = 30
+ const val REQUIRE_MEAT = 4
+ const val REQUIRE_RICE = 2
+ const val REQUIRE_CHICKEN = 10
+ const val OTHER_NEEDS = 250.0F
+ const val DOUBLE_AVERAGE_SALARY = 2
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetCitiesAverageSalary.kt b/src/main/kotlin/interactor/GetCitiesAverageSalary.kt
new file mode 100644
index 000000000..ed5837609
--- /dev/null
+++ b/src/main/kotlin/interactor/GetCitiesAverageSalary.kt
@@ -0,0 +1,28 @@
+package interactor
+
+import model.CityEntity
+
+class GetCitiesAverageSalary(private val dataSource: CostOfLivingDataSource) {
+
+ fun execute(country: String): List> {
+
+ val countryData = dataSource.getAllCitiesData().filter {
+ excludeNullSalariesAndLowQualityDataAndCheckCountriesName(it, country)
+ }
+
+ return if (countryData.isNotEmpty()) {
+ countryData.map {
+ Pair(it.cityName, it.averageMonthlyNetSalaryAfterTax!!.toDouble())
+ }
+ } else {
+ throw IllegalArgumentException("Invalid country name.")
+ }
+ }
+
+ private fun excludeNullSalariesAndLowQualityDataAndCheckCountriesName(city: CityEntity, country: String): Boolean {
+ return city.averageMonthlyNetSalaryAfterTax != null && city.dataQuality
+ && city.country.equals(country, ignoreCase = true)
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractor.kt b/src/main/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractor.kt
new file mode 100644
index 000000000..406ffdf47
--- /dev/null
+++ b/src/main/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractor.kt
@@ -0,0 +1,28 @@
+package interactor
+
+import model.CityEntity
+
+class GetCitiesNamesWithCheapestBananaPricesInteractor(private val dataSource: CostOfLivingDataSource) {
+
+ operator fun invoke(vararg cities: CityEntity): List {
+ return dataSource.getAllCitiesData()
+ .filter { isNotNullBananaPrice(it) && isContainsCitiesNames(it, cities.toList()) }
+ .sortedBy { it.fruitAndVegetablesPrices.banana1kg }
+ .map(CityEntity::cityName)
+ .takeIf { it.isNotEmpty() }
+ ?: throw IllegalStateException("maybe you entered invalid countries or something wrong in our server!")
+ }
+
+ private fun isNotNullBananaPrice(city: CityEntity): Boolean {
+ return city.fruitAndVegetablesPrices.banana1kg != null
+ }
+
+ private fun isContainsCitiesNames(city: CityEntity, cities: List): Boolean {
+ return city.cityName.toLowercase() in cities.map { it.cityName.toLowercase() }
+ }
+
+ private fun String.toLowercase(): String {
+ return lowercase().trim()
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractor.kt b/src/main/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractor.kt
index f7c4ec816..222e4f580 100644
--- a/src/main/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractor.kt
+++ b/src/main/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractor.kt
@@ -3,13 +3,24 @@ package interactor
import model.CityEntity
class GetCityHasCheapestInternetConnectionInteractor(
- private val dataSource: CostOfLivingDataSource,
+ private val dataSource: CostOfLivingDataSource
) {
- fun execute(): CityEntity{
- throw Throwable("Not Implemented yet")
+ operator fun invoke(): CityEntity {
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullSalariesAndNullInternetPriceAndLowQualityData)
+ .minByOrNull (::calculateInternetPercent)
+ ?: throw IllegalStateException("Invalid data")
}
+ private fun excludeNullSalariesAndNullInternetPriceAndLowQualityData(city: CityEntity): Boolean {
+ return city.dataQuality && city.averageMonthlyNetSalaryAfterTax != null
+ && city.servicesPrices.internet60MbpsOrMoreUnlimitedDataCableAdsl != null
+ }
+ private fun calculateInternetPercent(city: CityEntity): Float {
+ return (city.servicesPrices.internet60MbpsOrMoreUnlimitedDataCableAdsl!!
+ .div(city.averageMonthlyNetSalaryAfterTax!!))
+ }
-}
\ No newline at end of file
+}
diff --git a/src/main/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractor.kt b/src/main/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractor.kt
new file mode 100644
index 000000000..5461e4872
--- /dev/null
+++ b/src/main/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractor.kt
@@ -0,0 +1,61 @@
+package interactor
+
+import model.CityEntity
+import java.util.*
+
+
+class GetCityThatMatchTheManagerExpectationsInteractor(
+ private val dataSource: CostOfLivingDataSource
+) {
+
+ fun execute(countries: List): CityEntity? {
+ val existCountries = countries.map(::formatCountriesNames)
+ .filter { selectedCountries.contains(it) }
+
+ val pricesOfMeals = mutableListOf()
+
+ return if (existCountries.isNotEmpty()) {
+ dataSource
+ .getAllCitiesData()
+ .filter { it.country in existCountries }
+ .filter(::excludeNullPricesOfMeals)
+ .onEach {
+ pricesOfMeals.add(it.mealsPrices.mealFor2PeopleMidRangeRestaurant!!)
+ }.let { citiesEntity ->
+ getCityThatMatchExpectations(pricesOfMeals, citiesEntity)
+ }
+ } else {
+ null
+ }
+ }
+
+
+ private fun formatCountriesNames(countryName: String): String {
+ return countryName.lowercase()
+ .trim()
+ .split("\\s+".toRegex())
+ .joinToString(" ") {
+ it.replaceFirstChar { char ->
+ if (char.isLowerCase()) char.titlecase(Locale.getDefault()) else it
+ }
+ }
+ }
+
+ private fun excludeNullPricesOfMeals(city: CityEntity): Boolean {
+ return city.mealsPrices.mealFor2PeopleMidRangeRestaurant != null
+ }
+
+ private fun getCityThatMatchExpectations(
+ pricesOfMeals: MutableList,
+ citiesEntity: List
+ ): CityEntity {
+ val midPriceOfMeals = (pricesOfMeals.maxOf { it } - pricesOfMeals.minOf { it }).div(2)
+ return citiesEntity
+ .filter { it.mealsPrices.mealFor2PeopleMidRangeRestaurant!! >= midPriceOfMeals }
+ .sortedBy { it.mealsPrices.mealFor2PeopleMidRangeRestaurant }.first()
+ }
+
+ companion object {
+ private val selectedCountries = listOf("United States", "Canada", "Mexico")
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetCostlierCityInteractor.kt b/src/main/kotlin/interactor/GetCostlierCityInteractor.kt
new file mode 100644
index 000000000..8fe3b34b5
--- /dev/null
+++ b/src/main/kotlin/interactor/GetCostlierCityInteractor.kt
@@ -0,0 +1,32 @@
+package interactor
+
+import model.CityEntity
+
+
+class GetCostlierCityInteractor(
+
+ private val dataSource: CostOfLivingDataSource,
+) {
+ fun execute(): CityEntity {
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullValuesAndLowQualityData)
+ .maxByOrNull(::calculateTheRatioBetweenThePriceOfApartmentsInsideAndOutsideTheCity)
+ ?: throw Exception("Invalid Data")
+ }
+
+ private fun excludeNullValuesAndLowQualityData(city: CityEntity): Boolean {
+ return city.dataQuality && with(city.realEstatesPrices) {
+ apartmentOneBedroomInCityCentre != null &&
+ apartmentOneBedroomOutsideOfCentre != null &&
+ apartment3BedroomsInCityCentre != null &&
+ apartment3BedroomsOutsideOfCentre != null
+ }
+ }
+
+ private fun calculateTheRatioBetweenThePriceOfApartmentsInsideAndOutsideTheCity(city: CityEntity): Float {
+ return with(city.realEstatesPrices) {
+ (apartmentOneBedroomInCityCentre!! + apartment3BedroomsInCityCentre!!) /
+ (apartment3BedroomsOutsideOfCentre!! + apartmentOneBedroomOutsideOfCentre!!)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor.kt b/src/main/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor.kt
new file mode 100644
index 000000000..73443bc70
--- /dev/null
+++ b/src/main/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor.kt
@@ -0,0 +1,53 @@
+package interactor
+
+import model.CityEntity
+import kotlin.math.roundToInt
+
+class GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(
+ private val dataSource: CostOfLivingDataSource
+) {
+ operator fun invoke(limit: Int): List> {
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullNetSalaryAndPricePerSquareMeterAndLowDataQuality)
+ .takeIf { it.isNotEmpty() && limit > 0 }
+ ?.run {
+ asSequence()
+ .distinctBy { it.cityName }
+ .map(::makeAPairOfCityNameAndCountOfYears)
+ .sortedBy { it.second }
+ .take(limit).toList()
+ }
+ ?: throw Exception("Empty Data")
+
+ }
+
+ private fun makeAPairOfCityNameAndCountOfYears(city: CityEntity): Pair {
+ return Pair(
+ city.cityName, calculateCountOfYearsToBuyApartment(city, city.averageMonthlyNetSalaryAfterTax!!)
+ )
+ }
+
+ private fun excludeNullNetSalaryAndPricePerSquareMeterAndLowDataQuality(city: CityEntity): Boolean {
+ return city.averageMonthlyNetSalaryAfterTax != null &&
+ city.realEstatesPrices.pricePerSquareMeterToBuyApartmentOutsideOfCentre != null &&
+ city.dataQuality
+ }
+
+ private fun calculateCountOfYearsToBuyApartment(city: CityEntity, salary: Float): Float {
+ return getTheNearestFiveNumberAfterTheSign(
+ (city
+ .realEstatesPrices.pricePerSquareMeterToBuyApartmentOutsideOfCentre!!
+ .times(100))
+ .div(salary)
+ .div(12)
+ )
+ }
+
+ private fun getTheNearestFiveNumberAfterTheSign(number: Float): Float {
+ return number.times(100000)
+ .roundToInt()
+ .div(100000.0).toFloat()
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/GetTopTenCountriesTaxesInteractor.kt b/src/main/kotlin/interactor/GetTopTenCountriesTaxesInteractor.kt
new file mode 100644
index 000000000..53bef40b6
--- /dev/null
+++ b/src/main/kotlin/interactor/GetTopTenCountriesTaxesInteractor.kt
@@ -0,0 +1,40 @@
+package interactor
+
+import model.CityEntity
+
+
+class GetTopTenCountriesTaxesInteractor(private val dataSource : CostOfLivingDataSource) {
+ fun execute() : List> {
+ return dataSource.getAllCitiesData()
+ .filter(::excludeNullCokePepsiAndLowQualityData)
+ .groupBy { it.country }
+ .mapValues{
+ calculateAvgDrinkPrices(it.value)
+ }
+ .toList()
+ .sortedByDescending { (_, avgPrice) -> avgPrice }
+ .take(10).map { (country, avgPrice) -> Pair(country, avgPrice.toFloat()) }
+ }
+
+ private fun excludeNullCokePepsiAndLowQualityData(city : CityEntity) : Boolean {
+ return city.drinksPrices.cokePepsiAThirdOfLiterBottleInRestaurants != null && city.dataQuality
+ }
+
+ private fun calculateAvgDrinkPrices( countries : List) : Double {
+ return countries.sumOf { it.drinksPrices.cokePepsiAThirdOfLiterBottleInRestaurants!!.toDouble() } .div(countries.size)
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/kotlin/interactor/plus/GetCityNameWithCheapestTennisOnWeekendInteractor.kt b/src/main/kotlin/interactor/plus/GetCityNameWithCheapestTennisOnWeekendInteractor.kt
new file mode 100644
index 000000000..345a498cd
--- /dev/null
+++ b/src/main/kotlin/interactor/plus/GetCityNameWithCheapestTennisOnWeekendInteractor.kt
@@ -0,0 +1,18 @@
+package interactor.plus
+
+import interactor.CostOfLivingDataSource
+import model.CityEntity
+
+class GetCitiesNameWithCheapestTennisPriceOnWeekendInteractor(
+ private val dataSource: CostOfLivingDataSource
+) {
+ operator fun invoke(limit: Int): List {
+ return dataSource.getAllCitiesData()
+ .filter { it.servicesPrices.tennisCourtRentOneHourOnWeekend != null }
+ .sortedBy { it.servicesPrices.tennisCourtRentOneHourOnWeekend }
+ .take(limit)
+ .map(CityEntity::cityName)
+ .takeIf { it.isNotEmpty() }
+ ?: throw IllegalStateException("Empty list!")
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/interactor/utils/BedroomOption.kt b/src/main/kotlin/interactor/utils/BedroomOption.kt
new file mode 100644
index 000000000..5b0f44829
--- /dev/null
+++ b/src/main/kotlin/interactor/utils/BedroomOption.kt
@@ -0,0 +1,6 @@
+package interactor.utils
+
+enum class BedroomOption {
+ ONE_BEDROOM,
+ THREE_BEDROOM,
+}
\ No newline at end of file
diff --git a/src/main/kotlin/model/FruitAndVegetablesPrices.kt b/src/main/kotlin/model/FruitAndVegetablesPrices.kt
index 3095107c0..7b32b00fa 100644
--- a/src/main/kotlin/model/FruitAndVegetablesPrices.kt
+++ b/src/main/kotlin/model/FruitAndVegetablesPrices.kt
@@ -8,4 +8,7 @@ data class FruitAndVegetablesPrices(
val potato1kg: Float?,
val onion1kg: Float?,
val lettuceOneHead: Float?,
-)
+) {
+ fun getAverageFruitsAndVegetablesPrice() =
+ listOfNotNull(tomato1kg, potato1kg, lettuceOneHead, oranges1kg, onion1kg, banana1kg, apples1kg).average()
+}
\ No newline at end of file
diff --git a/src/main/kotlin/ui/UserInterface.kt b/src/main/kotlin/ui/UserInterface.kt
new file mode 100644
index 000000000..f8ce0d6dd
--- /dev/null
+++ b/src/main/kotlin/ui/UserInterface.kt
@@ -0,0 +1,130 @@
+package ui
+
+import interactor.*
+import interactor.utils.BedroomOption
+import model.*
+
+
+class UserInterface(private val dataSource: CostOfLivingDataSource) {
+ fun init() {
+ do {
+ println(
+ "1- Get the city that has the cheapest internet connection. \n" +
+ "2- Get cities with lowest fruit/veg prices compared to salaries. \n" +
+ "3- Get country's salaries with mixed case input.\n" +
+ "4- Get city with highest apartment rent difference between city center and outside.\n" +
+ "5- Get top 5 cities to fashion shopping famous brands for most suitable prices.\n" +
+ "6- Get top 10 cities names that he can buy this apartment faster.\n" +
+ "7- Get best cities with cheapest banana prices. \n" +
+ "8- Get the city that match manager expectations.\n" +
+ "9- Get the top 10 countries that enforce high taxes on carbonated drinks.\n" +
+ "10-Get the most suitable city in the world that they can have more savings per month.\n" +
+ "Note: for exit write 'Exit/exit' \n\n"
+ )
+ when (readlnOrNull()) {
+ "1" -> {
+ println(GetCityHasCheapestInternetConnectionInteractor(dataSource)())
+ printSeparationLine()
+ }
+
+ "2" -> {
+ print("How many cities would you like?")
+ val limit = readln().toInt()
+ println(GetAverageFruitAndVegetablesInteractor(dataSource)(limit))
+ printSeparationLine()
+ }
+
+ "3" -> {
+ print("please enter name country:-")
+ val nameCountry = readlnOrNull()
+ println(nameCountry?.let { GetCitiesAverageSalary(dataSource).execute(it) })
+ printSeparationLine()
+ }
+
+ "4" -> {
+
+ println( GetCostlierCityInteractor(dataSource).execute() )
+ printSeparationLine()
+ }
+
+ "5" -> {
+ println(GetBestCitiesToFashionShoppingInteractor(dataSource).execute())
+ printSeparationLine()
+ }
+
+ "6" -> {
+ print("please enter your full time salary:-")
+ val fullTimeSalary = readlnOrNull()?.toDouble()
+ if (fullTimeSalary != null) {
+ println(
+ GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(dataSource)
+ )
+ } else {
+ print("your input not valid, try again.")
+ }
+ printSeparationLine()
+ }
+
+ "7" -> {
+ print("please enter cities names seperated by dash :- ")
+ val citiesNames = readlnOrNull()
+ if (citiesNames != null) {
+ val city = makeCities(citiesNames.split("-"))
+ println(GetCitiesNamesWithCheapestBananaPricesInteractor(dataSource)(*city))
+ } else {
+ print("your input not valid, try again.")
+ }
+ printSeparationLine()
+ }
+
+ "8" -> {
+ print("please enter list name countries :-")
+ print("example iraq, usa:-")
+ val countries = readlnOrNull().toString().split(",")
+ if (countries.isNotEmpty()) {
+ print(GetCityThatMatchTheManagerExpectationsInteractor(dataSource).execute(countries))
+ } else {
+ print("your input not valid, try again.")
+ }
+ printSeparationLine()
+ }
+
+ "9" -> {
+ println(GetTopTenCountriesTaxesInteractor(dataSource).execute())
+ printSeparationLine()
+ }
+
+ "10" -> {
+
+ println(GetBestCityForSavingMoneyInteractor(dataSource)())
+ }
+
+ "Exit", "exit" -> {
+ break
+ }
+ }
+
+
+ } while (true)
+ }
+
+ private fun printSeparationLine() {
+ print("\n_______________________________\n")
+ }
+}
+
+fun makeCities(cityNames: List) = cityNames.map {
+ CityEntity(
+ it, "",
+ MealsPrices(null, null, null),
+ DrinksPrices(null, null, null, null, null),
+ FruitAndVegetablesPrices(null, null, null, null, null, null, null),
+ FoodPrices(null, null, null, null, null, null),
+ ServicesPrices(null, null, null, null, null, null, null, null),
+ ClothesPrices(null, null, null, null),
+ TransportationsPrices(null, null, null, null, null, null),
+ CarsPrices(null, null),
+ RealEstatesPrices(null, null, null, null, null, null),
+ null, false
+ )
+}.toTypedArray()
diff --git a/src/test/kotlin/data/AverageMonthlyNetSalaryFakeData.kt b/src/test/kotlin/data/AverageMonthlyNetSalaryFakeData.kt
new file mode 100644
index 000000000..c4224eeac
--- /dev/null
+++ b/src/test/kotlin/data/AverageMonthlyNetSalaryFakeData.kt
@@ -0,0 +1,163 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class AverageMonthlyNetSalaryFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = Float.NaN,
+ dataQuality = false
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/BananaCheapestFakeData.kt b/src/test/kotlin/data/BananaCheapestFakeData.kt
new file mode 100644
index 000000000..b574d4f98
--- /dev/null
+++ b/src/test/kotlin/data/BananaCheapestFakeData.kt
@@ -0,0 +1,299 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object BananaCheapestFakeData : CostOfLivingDataSource {
+
+ //region helper functions
+ fun citiesListOf(vararg citiesNames: String) = citiesNames.map(::makeCity).toTypedArray()
+ fun makeCity(cityName: String) =
+ CityEntity(
+ cityName, "Cuba", MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ), DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ), FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = 1f,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ )
+ // endregion
+
+
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = 2f,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = 3f,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = 4f,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = false
+ )
+ )
+ }
+}
\ No newline at end of file
diff --git a/src/test/kotlin/data/BestCityForSavingMoneyFakeData.kt b/src/test/kotlin/data/BestCityForSavingMoneyFakeData.kt
new file mode 100644
index 000000000..96f3de4f0
--- /dev/null
+++ b/src/test/kotlin/data/BestCityForSavingMoneyFakeData.kt
@@ -0,0 +1,320 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object BestCityForSavingMoneyFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+
+ return listOf(
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.2f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 1000.0f,
+ apartment3BedroomsOutsideOfCentre = 100.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1111.1f
+ ),
+ averageMonthlyNetSalaryAfterTax = 90000000.0f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Keller",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 30.0f,
+ mealFor2PeopleMidRangeRestaurant = 75.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.5f,
+ waterAThirdOfLiterBottleInRestaurants = 1.17f,
+ milkRegularOneLiter = 0.88f,
+ waterOneAndHalfLiterBottleAtTheMarket = 3.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.13f,
+ banana1kg = 1.33f,
+ oranges1kg = 5.75f,
+ tomato1kg = 6.03f,
+ potato1kg = 4.05f,
+ onion1kg = 3.36f,
+ lettuceOneHead = 1.59f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.84f,
+ riceWhite1kg = 3.98f,
+ eggsRegular12 = 3.0f,
+ localCheese1kg = 15.08f,
+ chickenFillets1kg = 7.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 18.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 210.09f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = 39.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1125.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.0f,
+ onePairOfNikeRunningShoesMidRange = 92.5f,
+ onePairOfMenLeatherBusinessShoes = 200.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.12f,
+ taxi1kmNormalTariff = 1.12f,
+ taxi1hourWaitingNormalTariff = 18.0f,
+ gasolineOneLiter = 0.99f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 29880.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20425.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1521.67f,
+ apartmentOneBedroomOutsideOfCentre = 1111.1f,
+ apartment3BedroomsInCityCentre = 3200.0f,
+ apartment3BedroomsOutsideOfCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1111.1f
+ ),
+ averageMonthlyNetSalaryAfterTax = 5555.5f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Malden",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.33f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 2.0f,
+ oranges1kg = 6.61f,
+ tomato1kg = 5.51f,
+ potato1kg = 5.51f,
+ onion1kg = 4.4f,
+ lettuceOneHead = 2.03f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 6.17f,
+ eggsRegular12 = null,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 221.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 69.99f,
+ onePairOfMenLeatherBusinessShoes = 104.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.5f,
+ monthlyPassRegularPrice = 84.0f,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 10763.91f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 6458.35f
+ ),
+ averageMonthlyNetSalaryAfterTax = 14.9f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Pearl City",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.25f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1000.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.44f,
+ milkRegularOneLiter = 2.38f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.91f,
+ banana1kg = 3.84f,
+ oranges1kg = 7.02f,
+ tomato1kg = 5.94f,
+ potato1kg = 4.95f,
+ onion1kg = 4.44f,
+ lettuceOneHead = 2.74f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 4.41f,
+ riceWhite1kg = 7.33f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.13f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 26.46f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 251.16f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.12f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.55f,
+ oneSummerDressInAChainStoreZaraHAndM = 35.87f,
+ onePairOfNikeRunningShoesMidRange = 79.29f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 2000.0f,
+ apartmentOneBedroomOutsideOfCentre = 1750.0f,
+ apartment3BedroomsInCityCentre = 5000.0f,
+ apartment3BedroomsOutsideOfCentre = 4750.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 4000.0f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 3500.0f
+ ),
+ averageMonthlyNetSalaryAfterTax = 9000.0f,
+ dataQuality = false
+ )
+
+ )
+
+ }
+
+ val emptyData by lazy {
+ object : CostOfLivingDataSource {
+
+ override fun getAllCitiesData() = emptyList()
+ }
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/CheapestApartmentsInCitiesFakeData.kt b/src/test/kotlin/data/CheapestApartmentsInCitiesFakeData.kt
new file mode 100644
index 000000000..dc69b7c15
--- /dev/null
+++ b/src/test/kotlin/data/CheapestApartmentsInCitiesFakeData.kt
@@ -0,0 +1,1004 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object CheapestApartmentsInCitiesFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+
+ CityEntity(
+ cityName = "Domyat",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 60f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Popeye Village",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 200f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Hallstatt",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Simiane La Rotonde",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 800f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Cinque Terre",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 900f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Ortahisar",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Oia",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1200f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Shirakawa-go",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Ait Ben-Haddou",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1700f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Cua Van",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Alberobello",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Júzcar",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2700f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Reine",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 5000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/CheapestInternetFakeData.kt b/src/test/kotlin/data/CheapestInternetFakeData.kt
new file mode 100644
index 000000000..21949199d
--- /dev/null
+++ b/src/test/kotlin/data/CheapestInternetFakeData.kt
@@ -0,0 +1,816 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object CheapestInternetFakeData {
+ private val validData by lazy{
+ listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 15.0f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 120.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Damanhur",
+ country = "Egypt",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 3.05f,
+ mealFor2PeopleMidRangeRestaurant = 23.4f,
+ mealAtMcDonaldSOrEquivalent = 4.07f,
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.19f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.35f,
+ waterAThirdOfLiterBottleInRestaurants = 0.2f,
+ milkRegularOneLiter = 0.51f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.27f,
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.79f,
+ banana1kg = 0.61f,
+ oranges1kg = 0.41f,
+ tomato1kg = 0.24f,
+ potato1kg = 0.27f,
+ onion1kg = 0.18f,
+ lettuceOneHead = 0.09f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.54f,
+ riceWhite1kg = 0.52f,
+ eggsRegular12 = 0.98f,
+ localCheese1kg = 1.42f,
+ chickenFillets1kg = 2.92f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.33f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 47.48f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 12.21f,
+ fitnessClubMonthlyFeeForOneAdult = 16.28f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 40.7f,
+ internationalPrimarySchoolYearlyForOneChild = 915.7f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 12.21f,
+ oneSummerDressInAChainStoreZaraHAndM = 10.17f,
+ onePairOfNikeRunningShoesMidRange = 122.09f,
+ onePairOfMenLeatherBusinessShoes = 24.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.08f,
+ monthlyPassRegularPrice = 8.14f,
+ taxiStartNormalTariff = 0.35f,
+ taxi1kmNormalTariff = 0.16f,
+ taxi1hourWaitingNormalTariff = 1.63f,
+ gasolineOneLiter = 0.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15261.71f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17296.61f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1017.45f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 203.49f
+ ),
+ averageMonthlyNetSalaryAfterTax = 81.4f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "cairo",
+ country = "Egypt",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 5.05f,
+ mealFor2PeopleMidRangeRestaurant = 23.4f,
+ mealAtMcDonaldSOrEquivalent = 6.07f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 7.19f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 8.35f,
+ waterAThirdOfLiterBottleInRestaurants = 0.2f,
+ milkRegularOneLiter = 0.51f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.27f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.79f,
+ banana1kg = 0.61f,
+ oranges1kg = 0.41f,
+ tomato1kg = 0.24f,
+ potato1kg = 0.27f,
+ onion1kg = 0.18f,
+ lettuceOneHead = 0.09f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.54f,
+ riceWhite1kg = 0.52f,
+ eggsRegular12 = 0.98f,
+ localCheese1kg = 1.42f,
+ chickenFillets1kg = 2.92f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.33f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 47.48f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 52.21f,
+ fitnessClubMonthlyFeeForOneAdult = 16.28f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 40.7f,
+ internationalPrimarySchoolYearlyForOneChild = 915.7f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 12.21f,
+ oneSummerDressInAChainStoreZaraHAndM = 10.17f,
+ onePairOfNikeRunningShoesMidRange = 122.09f,
+ onePairOfMenLeatherBusinessShoes = 24.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.08f,
+ monthlyPassRegularPrice = 8.14f,
+ taxiStartNormalTariff = 0.35f,
+ taxi1kmNormalTariff = 0.16f,
+ taxi1hourWaitingNormalTariff = 1.63f,
+ gasolineOneLiter = 0.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15261.71f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17296.61f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1017.45f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 203.49f
+ ),
+ averageMonthlyNetSalaryAfterTax = 81.4f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Dushanbe",
+ country = "Tajikistan",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 3.97f,
+ mealFor2PeopleMidRangeRestaurant = 11.0f,
+ mealAtMcDonaldSOrEquivalent = 4.96f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.2f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.41f,
+ waterAThirdOfLiterBottleInRestaurants = 0.28f,
+ milkRegularOneLiter = 0.72f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.43f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.15f,
+ banana1kg = 2.24f,
+ oranges1kg = 2.3f,
+ tomato1kg = 1.19f,
+ potato1kg = 0.44f,
+ onion1kg = 0.31f,
+ lettuceOneHead = 0.42f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.41f,
+ riceWhite1kg = 1.58f,
+ eggsRegular12 = 1.56f,
+ localCheese1kg = 5.77f,
+ chickenFillets1kg = 3.9f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.84f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 31.26f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 22.17f,
+ fitnessClubMonthlyFeeForOneAdult = 34.86f,
+ tennisCourtRentOneHourOnWeekend = 11.17f,
+ cinemaInternationalReleaseOneSeat = 5.21f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 84.39f,
+ internationalPrimarySchoolYearlyForOneChild = 4964.41f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 32.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 24.07f,
+ onePairOfNikeRunningShoesMidRange = 53.36f,
+ onePairOfMenLeatherBusinessShoes = 52.12f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.25f,
+ monthlyPassRegularPrice = 6.95f,
+ taxiStartNormalTariff = 0.99f,
+ taxi1kmNormalTariff = 0.3f,
+ taxi1hourWaitingNormalTariff = 2.38f,
+ gasolineOneLiter = 0.94f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 14392.29f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21839.84f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 376.03f,
+ apartmentOneBedroomOutsideOfCentre = 186.15f,
+ apartment3BedroomsInCityCentre = 631.14f,
+ apartment3BedroomsOutsideOfCentre = 330.47f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 835.59f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 381.24f
+ ),
+ averageMonthlyNetSalaryAfterTax = 163.81f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Vila Real de Santo Antonio",
+ country = "Portugal",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.54f,
+ mealFor2PeopleMidRangeRestaurant = 52.69f,
+ mealAtMcDonaldSOrEquivalent = 7.11f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.3f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.48f,
+ waterAThirdOfLiterBottleInRestaurants = 1.06f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.53f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.44f,
+ banana1kg = 1.07f,
+ oranges1kg = 1.36f,
+ tomato1kg = 1.92f,
+ potato1kg = 1.05f,
+ onion1kg = 0.93f,
+ lettuceOneHead = 0.95f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.35f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 1.93f,
+ localCheese1kg = 11.24f,
+ chickenFillets1kg = 6.4f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.89f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 106.81f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.04f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 33.72f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 7.17f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 189.67f,
+ internationalPrimarySchoolYearlyForOneChild = 6322.47f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 72.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.81f,
+ onePairOfNikeRunningShoesMidRange = 74.93f,
+ onePairOfMenLeatherBusinessShoes = 47.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.95f,
+ monthlyPassRegularPrice = 24.24f,
+ taxiStartNormalTariff = 3.42f,
+ taxi1kmNormalTariff = 0.47f,
+ taxi1hourWaitingNormalTariff = 15.81f,
+ gasolineOneLiter = 2.02f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 28977.99f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 27397.38f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2634.36f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 843.0f
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Samarkand",
+ country = "Uzbekistan",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 5.0f,
+ mealFor2PeopleMidRangeRestaurant = 19.44f,
+ mealAtMcDonaldSOrEquivalent = 3.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.55f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.6f,
+ waterAThirdOfLiterBottleInRestaurants = 0.29f,
+ milkRegularOneLiter = 0.99f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.3f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.42f,
+ banana1kg = 1.71f,
+ oranges1kg = 2.28f,
+ tomato1kg = 1.48f,
+ potato1kg = 0.48f,
+ onion1kg = 0.36f,
+ lettuceOneHead = 0.3f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.27f,
+ riceWhite1kg = 1.2f,
+ eggsRegular12 = 1.49f,
+ localCheese1kg = 6.08f,
+ chickenFillets1kg = 3.64f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.26f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 32.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 15.0f,
+ fitnessClubMonthlyFeeForOneAdult = 36.67f,
+ tennisCourtRentOneHourOnWeekend = 11.0f,
+ cinemaInternationalReleaseOneSeat = 1.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 200.0f,
+ internationalPrimarySchoolYearlyForOneChild = 5622.48f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 80.0f,
+ onePairOfMenLeatherBusinessShoes = 99.12f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.15f,
+ monthlyPassRegularPrice = 10.0f,
+ taxiStartNormalTariff = 0.5f,
+ taxi1kmNormalTariff = 0.27f,
+ taxi1hourWaitingNormalTariff = 3.0f,
+ gasolineOneLiter = 0.91f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 13508.25f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 19690.73f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 275.0f,
+ apartmentOneBedroomOutsideOfCentre = 206.67f,
+ apartment3BedroomsInCityCentre = 500.0f,
+ apartment3BedroomsOutsideOfCentre = 383.33f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 730.67f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 482.64f
+ ),
+ averageMonthlyNetSalaryAfterTax = 253.33f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Malabo",
+ country = "Equatorial Guinea",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.85f,
+ mealFor2PeopleMidRangeRestaurant = 40.16f,
+ mealAtMcDonaldSOrEquivalent = 20.08f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 6.43f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.07f,
+ waterAThirdOfLiterBottleInRestaurants = 1.2f,
+ milkRegularOneLiter = 2.25f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.91f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.62f,
+ banana1kg = 2.81f,
+ oranges1kg = 4.02f,
+ tomato1kg = 2.81f,
+ potato1kg = 4.26f,
+ onion1kg = 4.02f,
+ lettuceOneHead = 0.91f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.2f,
+ riceWhite1kg = 1.61f,
+ eggsRegular12 = 1.93f,
+ localCheese1kg = null,
+ chickenFillets1kg = 4.82f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 4.02f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 46.59f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.27f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 160.64f,
+ fitnessClubMonthlyFeeForOneAdult = 54.89f,
+ tennisCourtRentOneHourOnWeekend = 28.02f,
+ cinemaInternationalReleaseOneSeat = 7.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 68.27f,
+ internationalPrimarySchoolYearlyForOneChild = 1743.37f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 24.1f,
+ oneSummerDressInAChainStoreZaraHAndM = 77.64f,
+ onePairOfNikeRunningShoesMidRange = 240.96f,
+ onePairOfMenLeatherBusinessShoes = 72.29f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.61f,
+ monthlyPassRegularPrice = 44.3f,
+ taxiStartNormalTariff = 0.8f,
+ taxi1kmNormalTariff = 0.8f,
+ taxi1hourWaitingNormalTariff = 6.43f,
+ gasolineOneLiter = 0.78f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 22048.18f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 32218.45f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 200.8f,
+ apartmentOneBedroomOutsideOfCentre = 112.45f,
+ apartment3BedroomsInCityCentre = 722.89f,
+ apartment3BedroomsOutsideOfCentre = 361.45f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 321.28f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Dehra Dun",
+ country = "India",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 1.84f,
+ mealFor2PeopleMidRangeRestaurant = 18.42f,
+ mealAtMcDonaldSOrEquivalent = 5.22f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.41f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.37f,
+ waterAThirdOfLiterBottleInRestaurants = 0.19f,
+ milkRegularOneLiter = 0.71f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.37f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.45f,
+ banana1kg = 0.67f,
+ oranges1kg = 0.93f,
+ tomato1kg = 0.54f,
+ potato1kg = 0.32f,
+ onion1kg = 0.43f,
+ lettuceOneHead = 0.52f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.44f,
+ riceWhite1kg = 0.56f,
+ eggsRegular12 = 0.88f,
+ localCheese1kg = 4.38f,
+ chickenFillets1kg = 3.19f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 3.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 58.34f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.01f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 8.75f,
+ fitnessClubMonthlyFeeForOneAdult = 17.69f,
+ tennisCourtRentOneHourOnWeekend = 11.05f,
+ cinemaInternationalReleaseOneSeat = 4.3f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 51.28f,
+ internationalPrimarySchoolYearlyForOneChild = 1321.52f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 28.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.63f,
+ onePairOfNikeRunningShoesMidRange = 63.87f,
+ onePairOfMenLeatherBusinessShoes = 51.58f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.43f,
+ monthlyPassRegularPrice = 4.91f,
+ taxiStartNormalTariff = 0.61f,
+ taxi1kmNormalTariff = 0.2f,
+ taxi1hourWaitingNormalTariff = 1.84f,
+ gasolineOneLiter = 1.21f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 18422.64f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 145.85f,
+ apartmentOneBedroomOutsideOfCentre = 74.92f,
+ apartment3BedroomsInCityCentre = 331.61f,
+ apartment3BedroomsOutsideOfCentre = 186.68f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2897.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 615.45f
+ ),
+ averageMonthlyNetSalaryAfterTax = 358.14f,
+ dataQuality = true
+ )
+ )
+
+ }
+ private val _invalidData by lazy {
+ listOf(
+ CityEntity(
+ cityName = " ",
+ country = " ",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = null,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = null
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = null,
+ banana1kg = null,
+ oranges1kg = null,
+ tomato1kg = null,
+ potato1kg = null,
+ onion1kg = null,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = null,
+ eggsRegular12 = null,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ )
+ )
+ }
+
+ val validSalaryAndInternetPrices by lazy {
+ object : CostOfLivingDataSource {
+ override fun getAllCitiesData() = validData
+ }
+ }
+
+ val invalidData by lazy {
+ object : CostOfLivingDataSource {
+ override fun getAllCitiesData() = _invalidData
+ }
+ }
+
+ val emptyData by lazy {
+ object : CostOfLivingDataSource {
+ override fun getAllCitiesData() = emptyList()
+
+ }
+ }
+
+}
diff --git a/src/test/kotlin/data/CitiesAverageSalaryFakeData.kt b/src/test/kotlin/data/CitiesAverageSalaryFakeData.kt
new file mode 100644
index 000000000..95d531768
--- /dev/null
+++ b/src/test/kotlin/data/CitiesAverageSalaryFakeData.kt
@@ -0,0 +1,234 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class CitiesAverageSalaryFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/CostlierCityFakeData.kt b/src/test/kotlin/data/CostlierCityFakeData.kt
new file mode 100644
index 000000000..7ead17feb
--- /dev/null
+++ b/src/test/kotlin/data/CostlierCityFakeData.kt
@@ -0,0 +1,379 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class CostlierCityFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 200.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 300.0f,
+ apartmentOneBedroomOutsideOfCentre = 180.0f,
+ apartment3BedroomsInCityCentre = 800.0f,
+ apartment3BedroomsOutsideOfCentre = 550.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = 970.0f,
+ apartment3BedroomsInCityCentre = 2567.0f,
+ apartment3BedroomsOutsideOfCentre = 999.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Masin",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 6000.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Seoul",
+ country = "Korean",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 678f,
+ apartmentOneBedroomOutsideOfCentre = 500f,
+ apartment3BedroomsInCityCentre = 7000.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+ )
+
+ }
+}
+
+fun main() {
+
+}
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/CountriesTaxesFakeData.kt b/src/test/kotlin/data/CountriesTaxesFakeData.kt
new file mode 100644
index 000000000..2ef35eb5d
--- /dev/null
+++ b/src/test/kotlin/data/CountriesTaxesFakeData.kt
@@ -0,0 +1,374 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class CountriesTaxesFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Great Falls",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 9.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.02f,
+ waterAThirdOfLiterBottleInRestaurants = 1.71f,
+ milkRegularOneLiter = 1.02f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.86f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.41f,
+ banana1kg = 1.58f,
+ oranges1kg = 3.93f,
+ tomato1kg = 4.41f,
+ potato1kg = 1.65f,
+ onion1kg = 2.08f,
+ lettuceOneHead = 1.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.95f,
+ riceWhite1kg = 4.12f,
+ eggsRegular12 = 3.25f,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = 11.01f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.23f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 145.61f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.15f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 65.83f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 2500.0f,
+ internationalPrimarySchoolYearlyForOneChild = 75000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.25f,
+ oneSummerDressInAChainStoreZaraHAndM = 27.5f,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = 120.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.5f,
+ monthlyPassRegularPrice = 55.0f,
+ taxiStartNormalTariff = 9.5f,
+ taxi1kmNormalTariff = 1.46f,
+ taxi1hourWaitingNormalTariff = 25.0f,
+ gasolineOneLiter = 1.44f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 31000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 750.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1600.0f,
+ apartment3BedroomsOutsideOfCentre = 2250.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2583.34f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 7965.29f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Roseburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.49f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.22f,
+ waterAThirdOfLiterBottleInRestaurants = 1.26f,
+ milkRegularOneLiter = 0.98f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.3f,
+ banana1kg = 0.99f,
+ oranges1kg = 2.2f,
+ tomato1kg = 1.1f,
+ potato1kg = 1.71f,
+ onion1kg = 1.62f,
+ lettuceOneHead = 1.83f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.04f,
+ riceWhite1kg = 2.2f,
+ eggsRegular12 = 1.69f,
+ localCheese1kg = 12.9f,
+ chickenFillets1kg = 16.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.49f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 100.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.25f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 55.0f,
+ fitnessClubMonthlyFeeForOneAdult = 50.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 921.42f,
+ internationalPrimarySchoolYearlyForOneChild = 8950.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.67f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.0f,
+ onePairOfNikeRunningShoesMidRange = 63.33f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.0f,
+ monthlyPassRegularPrice = 20.0f,
+ taxiStartNormalTariff = 3.0f,
+ taxi1kmNormalTariff = 1.86f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22328.2f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1475.0f,
+ apartment3BedroomsInCityCentre = 2350.0f,
+ apartment3BedroomsOutsideOfCentre = 2625.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1883.68f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1614.59f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1200.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Moose Jaw",
+ country = "Canada",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.82f,
+ mealFor2PeopleMidRangeRestaurant = 55.59f,
+ mealAtMcDonaldSOrEquivalent = 8.89f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.29f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.16f,
+ waterAThirdOfLiterBottleInRestaurants = 1.65f,
+ milkRegularOneLiter = 1.48f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.15f,
+ banana1kg = 1.06f,
+ oranges1kg = 2.96f,
+ tomato1kg = 2.88f,
+ potato1kg = 1.91f,
+ onion1kg = 1.74f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.91f,
+ riceWhite1kg = 1.63f,
+ eggsRegular12 = 3.19f,
+ localCheese1kg = 10.28f,
+ chickenFillets1kg = 8.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 154.9f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.19f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 54.66f,
+ fitnessClubMonthlyFeeForOneAdult = 55.59f,
+ tennisCourtRentOneHourOnWeekend = 48.17f,
+ cinemaInternationalReleaseOneSeat = 7.41f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 567.6f,
+ internationalPrimarySchoolYearlyForOneChild = 7893.24f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 29.65f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.94f,
+ onePairOfNikeRunningShoesMidRange = 79.67f,
+ onePairOfMenLeatherBusinessShoes = 101.91f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.93f,
+ monthlyPassRegularPrice = 29.65f,
+ taxiStartNormalTariff = 2.59f,
+ taxi1kmNormalTariff = 0.56f,
+ taxi1hourWaitingNormalTariff = 22.23f,
+ gasolineOneLiter = 1.35f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20752.19f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20011.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1185.84f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Chetumal",
+ country = "Mexico",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.56f,
+ mealFor2PeopleMidRangeRestaurant = 23.21f,
+ mealAtMcDonaldSOrEquivalent = 5.06f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.84f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.71f,
+ waterAThirdOfLiterBottleInRestaurants = 0.61f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.72f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.84f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.37f,
+ tomato1kg = 1.55f,
+ potato1kg = 1.42f,
+ onion1kg = 1.03f,
+ lettuceOneHead = 0.93f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.55f,
+ riceWhite1kg = 1.16f,
+ eggsRegular12 = 1.5f,
+ localCheese1kg = 4.13f,
+ chickenFillets1kg = 4.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 99.25f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 27.21f,
+ fitnessClubMonthlyFeeForOneAdult = 18.05f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.09f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 61.88f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.1f,
+ onePairOfNikeRunningShoesMidRange = 77.35f,
+ onePairOfMenLeatherBusinessShoes = 51.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.57f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.24f,
+ taxi1kmNormalTariff = 1.29f,
+ taxi1hourWaitingNormalTariff = 3.48f,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 21246.42f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16759.92f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 198.49f,
+ apartmentOneBedroomOutsideOfCentre = 126.98f,
+ apartment3BedroomsInCityCentre = 398.77f,
+ apartment3BedroomsOutsideOfCentre = 326.44f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 626.31f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 309.41f
+ ),
+ averageMonthlyNetSalaryAfterTax = 257.84f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Kuysinjaq",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 2.06f,
+ mealFor2PeopleMidRangeRestaurant = 10.96f,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.37f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.34f,
+ waterAThirdOfLiterBottleInRestaurants = 0.17f,
+ milkRegularOneLiter = 1.03f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.34f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.69f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.03f,
+ tomato1kg = 0.51f,
+ potato1kg = 0.51f,
+ onion1kg = 0.51f,
+ lettuceOneHead = 0.34f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.69f,
+ riceWhite1kg = 1.03f,
+ eggsRegular12 = 1.37f,
+ localCheese1kg = 6.85f,
+ chickenFillets1kg = 3.43f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 8.22f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 34.26f,
+ fitnessClubMonthlyFeeForOneAdult = 13.7f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.28f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 57.1f,
+ internationalPrimarySchoolYearlyForOneChild = 1027.75f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 13.7f,
+ oneSummerDressInAChainStoreZaraHAndM = 17.13f,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = 17.13f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.37f,
+ taxi1kmNormalTariff = 0.69f,
+ taxi1hourWaitingNormalTariff = 3.43f,
+ gasolineOneLiter = 0.62f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16444.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 137.03f,
+ apartmentOneBedroomOutsideOfCentre = 102.78f,
+ apartment3BedroomsInCityCentre = 205.55f,
+ apartment3BedroomsOutsideOfCentre = 171.29f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 342.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 137.03f
+ ),
+ averageMonthlyNetSalaryAfterTax = 411.1f,
+ dataQuality = true
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/EmptyFakeData.kt b/src/test/kotlin/data/EmptyFakeData.kt
new file mode 100644
index 000000000..d81b5183d
--- /dev/null
+++ b/src/test/kotlin/data/EmptyFakeData.kt
@@ -0,0 +1,20 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object EmptyFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return emptyList()
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/FakeDataSource.kt b/src/test/kotlin/data/FakeDataSource.kt
new file mode 100644
index 000000000..56791681a
--- /dev/null
+++ b/src/test/kotlin/data/FakeDataSource.kt
@@ -0,0 +1,6389 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+enum class TestCase {
+ AverageFruitAndVegetables,
+ ManagerExpectations,
+ BananaCheapest,
+ CostlierCity,
+ CheapestInternet,
+ CheapestApartmentsInCities,
+ CitiesAverageSalary,
+ BestCityForSavingMoney,
+ CountriesTaxes,
+ FashionShopping,
+ InvalidData,
+ Empty,
+ AverageMonthlyNetSalary
+}
+
+
+class FakeDataSource : CostOfLivingDataSource {
+
+
+ fun changeDataSource(state: TestCase) {
+ dataSource = when (state) {
+ TestCase.ManagerExpectations -> managerExpectations
+ TestCase.AverageFruitAndVegetables -> averageFruitAndVegetables
+ TestCase.BananaCheapest -> bananaCheapest
+ TestCase.CostlierCity -> costlierCity
+ TestCase.CheapestInternet -> cheapestInternet
+ TestCase.CheapestApartmentsInCities -> cheapestApartmentsInCities
+ TestCase.CitiesAverageSalary -> citiesAverageSalary
+ TestCase.FashionShopping -> fashionShopping
+ TestCase.CountriesTaxes -> countriesTaxes
+ TestCase.BestCityForSavingMoney -> bestCityForSavingMoney
+ TestCase.InvalidData -> invalidData
+ TestCase.Empty -> empty
+ TestCase.AverageMonthlyNetSalary -> averageMonthlyNetSalary
+ }
+ }
+
+ override fun getAllCitiesData(): List {
+ return dataSource
+ }
+
+ private companion object {
+
+ val averageMonthlyNetSalary = listOf(
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = Float.NaN,
+ dataQuality = false
+ )
+ )
+ val fake = listOf(
+
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = Float.NaN,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Keller",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 30.0f,
+ mealFor2PeopleMidRangeRestaurant = 75.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.8f,
+ waterAThirdOfLiterBottleInRestaurants = 1.17f,
+ milkRegularOneLiter = 0.88f,
+ waterOneAndHalfLiterBottleAtTheMarket = 3.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.13f,
+ banana1kg = 1.33f,
+ oranges1kg = 5.75f,
+ tomato1kg = 6.03f,
+ potato1kg = 4.05f,
+ onion1kg = 3.36f,
+ lettuceOneHead = 1.59f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.84f,
+ riceWhite1kg = 3.98f,
+ eggsRegular12 = 3.0f,
+ localCheese1kg = 15.08f,
+ chickenFillets1kg = 7.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 18.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 210.09f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = 39.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1125.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.0f,
+ onePairOfNikeRunningShoesMidRange = 92.5f,
+ onePairOfMenLeatherBusinessShoes = 200.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.12f,
+ taxi1kmNormalTariff = 1.12f,
+ taxi1hourWaitingNormalTariff = 18.0f,
+ gasolineOneLiter = 0.99f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 29880.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20425.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1521.67f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 3200.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 13.5f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Malden",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.33f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 2.0f,
+ oranges1kg = 6.61f,
+ tomato1kg = 5.51f,
+ potato1kg = 5.51f,
+ onion1kg = 4.4f,
+ lettuceOneHead = 2.03f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 6.17f,
+ eggsRegular12 = null,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 221.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 69.99f,
+ onePairOfMenLeatherBusinessShoes = 104.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.5f,
+ monthlyPassRegularPrice = 84.0f,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 10763.91f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 6458.35f
+ ),
+ averageMonthlyNetSalaryAfterTax = 14.9f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Pearl City",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.25f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.44f,
+ milkRegularOneLiter = 2.38f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.91f,
+ banana1kg = 3.84f,
+ oranges1kg = 7.02f,
+ tomato1kg = 5.94f,
+ potato1kg = 4.95f,
+ onion1kg = 4.44f,
+ lettuceOneHead = 2.74f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 4.41f,
+ riceWhite1kg = 7.33f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.13f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 26.46f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 251.16f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.12f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.55f,
+ oneSummerDressInAChainStoreZaraHAndM = 35.87f,
+ onePairOfNikeRunningShoesMidRange = 79.29f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 2000.0f,
+ apartmentOneBedroomOutsideOfCentre = 1750.0f,
+ apartment3BedroomsInCityCentre = 5000.0f,
+ apartment3BedroomsOutsideOfCentre = 4750.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 12.0f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Clayton",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 32.0f,
+ mealAtMcDonaldSOrEquivalent = 6.85f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.29f,
+ milkRegularOneLiter = 0.86f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.79f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.65f,
+ banana1kg = 1.34f,
+ oranges1kg = null,
+ tomato1kg = 2.43f,
+ potato1kg = null,
+ onion1kg = 1.94f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.48f,
+ riceWhite1kg = null,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.13f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 132.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.07f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1300.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 500f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Brevard",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.75f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.79f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.5f,
+ waterAThirdOfLiterBottleInRestaurants = 1.79f,
+ milkRegularOneLiter = 2.07f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.92f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.72f,
+ banana1kg = 1.26f,
+ oranges1kg = 4.23f,
+ tomato1kg = 5.49f,
+ potato1kg = 4.35f,
+ onion1kg = 3.17f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.6f,
+ riceWhite1kg = 3.56f,
+ eggsRegular12 = 2.59f,
+ localCheese1kg = 14.7f,
+ chickenFillets1kg = 11.02f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 118.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.69f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 54.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.5f,
+ onePairOfNikeRunningShoesMidRange = 78.33f,
+ onePairOfMenLeatherBusinessShoes = 141.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23750.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 975.0f,
+ apartment3BedroomsInCityCentre = 1700.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 600f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Woodlawn",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 11.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.2f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.33f,
+ waterAThirdOfLiterBottleInRestaurants = 1.5f,
+ milkRegularOneLiter = 1.1f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.85f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.03f,
+ banana1kg = 1.57f,
+ oranges1kg = 4.65f,
+ tomato1kg = 3.64f,
+ potato1kg = 2.69f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 1.73f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.74f,
+ riceWhite1kg = 3.38f,
+ eggsRegular12 = 1.79f,
+ localCheese1kg = 7.27f,
+ chickenFillets1kg = 4.39f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 11.02f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 122.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.03f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 800.0f,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 46.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.25f,
+ onePairOfNikeRunningShoesMidRange = 59.6f,
+ onePairOfMenLeatherBusinessShoes = 76.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.0f,
+ taxi1kmNormalTariff = 1.23f,
+ taxi1hourWaitingNormalTariff = 20.0f,
+ gasolineOneLiter = 1.16f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 25500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23666.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Brookdale",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = 50.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.27f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.87f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.4f,
+ banana1kg = 1.97f,
+ oranges1kg = 2.85f,
+ tomato1kg = 2.58f,
+ potato1kg = 1.42f,
+ onion1kg = 1.96f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 5.5f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.0f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 158.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.75f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 45.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 37.5f,
+ onePairOfNikeRunningShoesMidRange = 65.0f,
+ onePairOfMenLeatherBusinessShoes = 95.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2690.98f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Christiansburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 13.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.55f,
+ banana1kg = 2.7f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.04f,
+ potato1kg = 1.76f,
+ onion1kg = 2.89f,
+ lettuceOneHead = 1.65f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.64f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 10.71f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.04f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 162.37f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = 15.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 35000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 35.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 120.71f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.75f,
+ monthlyPassRegularPrice = 28.0f,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = 800.0f,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 3000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Kernersville",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 1.63f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.95f,
+ potato1kg = 2.99f,
+ onion1kg = 2.78f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.99f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 8.07f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.65f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 149.11f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 975.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15125.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.75f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 91.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = 30.0f,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23166.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 23f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Airway Heights",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 77.5f,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.17f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.86f,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.7f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.86f,
+ banana1kg = 1.64f,
+ oranges1kg = 4.32f,
+ tomato1kg = 4.36f,
+ potato1kg = 2.17f,
+ onion1kg = 2.4f,
+ lettuceOneHead = 1.67f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.76f,
+ riceWhite1kg = 3.93f,
+ eggsRegular12 = 2.0f,
+ localCheese1kg = 12.61f,
+ chickenFillets1kg = 10.93f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.21f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 225.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.4f,
+ fitnessClubMonthlyFeeForOneAdult = 65.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 300.0f,
+ internationalPrimarySchoolYearlyForOneChild = 19750.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.67f,
+ onePairOfNikeRunningShoesMidRange = 86.86f,
+ onePairOfMenLeatherBusinessShoes = 94.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 3.0f,
+ monthlyPassRegularPrice = 60.0f,
+ taxiStartNormalTariff = 5.0f,
+ taxi1kmNormalTariff = 1.15f,
+ taxi1hourWaitingNormalTariff = 35.0f,
+ gasolineOneLiter = 1.27f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 18597.5f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17300.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1300.0f,
+ apartment3BedroomsInCityCentre = 1800.0f,
+ apartment3BedroomsOutsideOfCentre = 1800.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 6070.85f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 4886.82f
+ ),
+ averageMonthlyNetSalaryAfterTax = 13f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Vryheid",
+ country = "South Africa",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = null,
+ milkRegularOneLiter = 1.94f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.03f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.14f,
+ banana1kg = 1.71f,
+ oranges1kg = 0.97f,
+ tomato1kg = 1.31f,
+ potato1kg = 0.91f,
+ onion1kg = 1.08f,
+ lettuceOneHead = 1.08f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.93f,
+ riceWhite1kg = 3.71f,
+ eggsRegular12 = 2.51f,
+ localCheese1kg = 8.05f,
+ chickenFillets1kg = 3.82f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 5.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 114.05f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.43f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 256.62f,
+ internationalPrimarySchoolYearlyForOneChild = 1140.54f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 56.97f,
+ oneSummerDressInAChainStoreZaraHAndM = 42.71f,
+ onePairOfNikeRunningShoesMidRange = 102.65f,
+ onePairOfMenLeatherBusinessShoes = 116.28f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 0.6f,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = 3.99f,
+ gasolineOneLiter = 1.49f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 17672.6f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23586.27f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 324f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Mortsel",
+ country = "Belgium",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 23.18f,
+ mealFor2PeopleMidRangeRestaurant = 73.76f,
+ mealAtMcDonaldSOrEquivalent = 11.85f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.74f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.11f,
+ waterAThirdOfLiterBottleInRestaurants = 2.46f,
+ milkRegularOneLiter = 0.83f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.46f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.02f,
+ banana1kg = 1.55f,
+ oranges1kg = 1.48f,
+ tomato1kg = 2.51f,
+ potato1kg = 0.95f,
+ onion1kg = 1.58f,
+ lettuceOneHead = 0.95f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.88f,
+ riceWhite1kg = 1.48f,
+ eggsRegular12 = 2.25f,
+ localCheese1kg = 10.71f,
+ chickenFillets1kg = 7.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 14.01f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 180.01f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.49f,
+ fitnessClubMonthlyFeeForOneAdult = 31.6f,
+ tennisCourtRentOneHourOnWeekend = 15.81f,
+ cinemaInternationalReleaseOneSeat = 13.01f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1580.62f,
+ internationalPrimarySchoolYearlyForOneChild = 13171.82f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 79.03f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.88f,
+ onePairOfNikeRunningShoesMidRange = 94.84f,
+ onePairOfMenLeatherBusinessShoes = 105.37f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.63f,
+ monthlyPassRegularPrice = 51.63f,
+ taxiStartNormalTariff = 5.27f,
+ taxi1kmNormalTariff = 2.37f,
+ taxi1hourWaitingNormalTariff = 31.61f,
+ gasolineOneLiter = 2.08f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15279.31f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 15279.31f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 790.31f,
+ apartmentOneBedroomOutsideOfCentre = 737.62f,
+ apartment3BedroomsInCityCentre = 1475.24f,
+ apartment3BedroomsOutsideOfCentre = 1159.12f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2528.99f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2212.86f
+ ),
+ averageMonthlyNetSalaryAfterTax = 31f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Ridgecrest",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 20.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.67f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.67f,
+ waterAThirdOfLiterBottleInRestaurants = 1.47f,
+ milkRegularOneLiter = 1.11f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.5f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.0f,
+ banana1kg = 1.8f,
+ oranges1kg = 4.29f,
+ tomato1kg = 5.68f,
+ potato1kg = 2.64f,
+ onion1kg = 2.16f,
+ lettuceOneHead = 1.81f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.37f,
+ riceWhite1kg = 4.41f,
+ eggsRegular12 = 3.22f,
+ localCheese1kg = 6.61f,
+ chickenFillets1kg = 10.28f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.98f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 157.63f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.6f,
+ fitnessClubMonthlyFeeForOneAdult = 30.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 18.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1466.67f,
+ internationalPrimarySchoolYearlyForOneChild = 27500.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.85f,
+ oneSummerDressInAChainStoreZaraHAndM = 33.33f,
+ onePairOfNikeRunningShoesMidRange = 87.5f,
+ onePairOfMenLeatherBusinessShoes = 134.29f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.5f,
+ taxi1kmNormalTariff = 1.71f,
+ taxi1hourWaitingNormalTariff = 65.0f,
+ gasolineOneLiter = 1.68f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23292.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22741.5f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 14f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Great Falls",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 9.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.02f,
+ waterAThirdOfLiterBottleInRestaurants = 1.71f,
+ milkRegularOneLiter = 1.02f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.86f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.41f,
+ banana1kg = 1.58f,
+ oranges1kg = 3.93f,
+ tomato1kg = 4.41f,
+ potato1kg = 1.65f,
+ onion1kg = 2.08f,
+ lettuceOneHead = 1.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.95f,
+ riceWhite1kg = 4.12f,
+ eggsRegular12 = 3.25f,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = 11.01f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.23f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 145.61f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.15f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 65.83f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 2500.0f,
+ internationalPrimarySchoolYearlyForOneChild = 75000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.25f,
+ oneSummerDressInAChainStoreZaraHAndM = 27.5f,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = 120.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.5f,
+ monthlyPassRegularPrice = 55.0f,
+ taxiStartNormalTariff = 9.5f,
+ taxi1kmNormalTariff = 1.46f,
+ taxi1hourWaitingNormalTariff = 25.0f,
+ gasolineOneLiter = 1.44f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 31000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 750.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1600.0f,
+ apartment3BedroomsOutsideOfCentre = 2250.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2583.34f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 7965.29f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000.0f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Roseburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.49f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.22f,
+ waterAThirdOfLiterBottleInRestaurants = 1.26f,
+ milkRegularOneLiter = 0.98f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.3f,
+ banana1kg = 0.99f,
+ oranges1kg = 2.2f,
+ tomato1kg = 1.1f,
+ potato1kg = 1.71f,
+ onion1kg = 1.62f,
+ lettuceOneHead = 1.83f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.04f,
+ riceWhite1kg = 2.2f,
+ eggsRegular12 = 1.69f,
+ localCheese1kg = 12.9f,
+ chickenFillets1kg = 16.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.49f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 100.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.25f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 55.0f,
+ fitnessClubMonthlyFeeForOneAdult = 50.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 921.42f,
+ internationalPrimarySchoolYearlyForOneChild = 8950.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.67f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.0f,
+ onePairOfNikeRunningShoesMidRange = 63.33f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.0f,
+ monthlyPassRegularPrice = 20.0f,
+ taxiStartNormalTariff = 3.0f,
+ taxi1kmNormalTariff = 1.86f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22328.2f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1475.0f,
+ apartment3BedroomsInCityCentre = 2350.0f,
+ apartment3BedroomsOutsideOfCentre = 2625.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1883.68f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1614.59f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1200.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Moose Jaw",
+ country = "Canada",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.82f,
+ mealFor2PeopleMidRangeRestaurant = 55.59f,
+ mealAtMcDonaldSOrEquivalent = 8.89f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.29f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.16f,
+ waterAThirdOfLiterBottleInRestaurants = 1.65f,
+ milkRegularOneLiter = 1.48f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.15f,
+ banana1kg = 1.06f,
+ oranges1kg = 2.96f,
+ tomato1kg = 2.88f,
+ potato1kg = 1.91f,
+ onion1kg = 1.74f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.91f,
+ riceWhite1kg = 1.63f,
+ eggsRegular12 = 3.19f,
+ localCheese1kg = 10.28f,
+ chickenFillets1kg = 8.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 154.9f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.19f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 54.66f,
+ fitnessClubMonthlyFeeForOneAdult = 55.59f,
+ tennisCourtRentOneHourOnWeekend = 48.17f,
+ cinemaInternationalReleaseOneSeat = 7.41f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 567.6f,
+ internationalPrimarySchoolYearlyForOneChild = 7893.24f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 29.65f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.94f,
+ onePairOfNikeRunningShoesMidRange = 79.67f,
+ onePairOfMenLeatherBusinessShoes = 101.91f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.93f,
+ monthlyPassRegularPrice = 29.65f,
+ taxiStartNormalTariff = 2.59f,
+ taxi1kmNormalTariff = 0.56f,
+ taxi1hourWaitingNormalTariff = 22.23f,
+ gasolineOneLiter = 1.35f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20752.19f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20011.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1185.84f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Chetumal",
+ country = "Mexico",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.56f,
+ mealFor2PeopleMidRangeRestaurant = 23.21f,
+ mealAtMcDonaldSOrEquivalent = 5.06f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.84f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.71f,
+ waterAThirdOfLiterBottleInRestaurants = 0.61f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.72f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.84f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.37f,
+ tomato1kg = 1.55f,
+ potato1kg = 1.42f,
+ onion1kg = 1.03f,
+ lettuceOneHead = 0.93f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.55f,
+ riceWhite1kg = 1.16f,
+ eggsRegular12 = 1.5f,
+ localCheese1kg = 4.13f,
+ chickenFillets1kg = 4.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 99.25f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 27.21f,
+ fitnessClubMonthlyFeeForOneAdult = 18.05f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.09f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 61.88f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.1f,
+ onePairOfNikeRunningShoesMidRange = 77.35f,
+ onePairOfMenLeatherBusinessShoes = 51.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.57f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.24f,
+ taxi1kmNormalTariff = 1.29f,
+ taxi1hourWaitingNormalTariff = 3.48f,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 21246.42f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16759.92f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 198.49f,
+ apartmentOneBedroomOutsideOfCentre = 126.98f,
+ apartment3BedroomsInCityCentre = 398.77f,
+ apartment3BedroomsOutsideOfCentre = 326.44f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 626.31f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 309.41f
+ ),
+ averageMonthlyNetSalaryAfterTax = 257.84f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Kuysinjaq",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 2.06f,
+ mealFor2PeopleMidRangeRestaurant = 10.96f,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.37f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.34f,
+ waterAThirdOfLiterBottleInRestaurants = 0.17f,
+ milkRegularOneLiter = 1.03f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.34f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.69f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.03f,
+ tomato1kg = 0.51f,
+ potato1kg = 0.51f,
+ onion1kg = 0.51f,
+ lettuceOneHead = 0.34f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.69f,
+ riceWhite1kg = 1.03f,
+ eggsRegular12 = 1.37f,
+ localCheese1kg = 6.85f,
+ chickenFillets1kg = 3.43f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 8.22f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 34.26f,
+ fitnessClubMonthlyFeeForOneAdult = 13.7f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.28f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 57.1f,
+ internationalPrimarySchoolYearlyForOneChild = 1027.75f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 13.7f,
+ oneSummerDressInAChainStoreZaraHAndM = 17.13f,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = 17.13f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.37f,
+ taxi1kmNormalTariff = 0.69f,
+ taxi1hourWaitingNormalTariff = 3.43f,
+ gasolineOneLiter = 0.62f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16444.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 137.03f,
+ apartmentOneBedroomOutsideOfCentre = 102.78f,
+ apartment3BedroomsInCityCentre = 205.55f,
+ apartment3BedroomsOutsideOfCentre = 171.29f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 342.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 137.03f
+ ),
+ averageMonthlyNetSalaryAfterTax = 411.1f,
+ dataQuality = false
+ )
+ )
+ private var dataSource = fake
+ val managerExpectations = listOf(
+ CityEntity(
+ cityName = "Great Falls",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 9.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.02f,
+ waterAThirdOfLiterBottleInRestaurants = 1.71f,
+ milkRegularOneLiter = 1.02f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.86f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.41f,
+ banana1kg = 1.58f,
+ oranges1kg = 3.93f,
+ tomato1kg = 4.41f,
+ potato1kg = 1.65f,
+ onion1kg = 2.08f,
+ lettuceOneHead = 1.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.95f,
+ riceWhite1kg = 4.12f,
+ eggsRegular12 = 3.25f,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = 11.01f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.23f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 145.61f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.15f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 65.83f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 2500.0f,
+ internationalPrimarySchoolYearlyForOneChild = 75000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.25f,
+ oneSummerDressInAChainStoreZaraHAndM = 27.5f,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = 120.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.5f,
+ monthlyPassRegularPrice = 55.0f,
+ taxiStartNormalTariff = 9.5f,
+ taxi1kmNormalTariff = 1.46f,
+ taxi1hourWaitingNormalTariff = 25.0f,
+ gasolineOneLiter = 1.44f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 31000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 750.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1600.0f,
+ apartment3BedroomsOutsideOfCentre = 2250.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2583.34f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 7965.29f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000.0f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Roseburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.49f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.22f,
+ waterAThirdOfLiterBottleInRestaurants = 1.26f,
+ milkRegularOneLiter = 0.98f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.3f,
+ banana1kg = 0.99f,
+ oranges1kg = 2.2f,
+ tomato1kg = 1.1f,
+ potato1kg = 1.71f,
+ onion1kg = 1.62f,
+ lettuceOneHead = 1.83f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.04f,
+ riceWhite1kg = 2.2f,
+ eggsRegular12 = 1.69f,
+ localCheese1kg = 12.9f,
+ chickenFillets1kg = 16.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.49f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 100.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.25f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 55.0f,
+ fitnessClubMonthlyFeeForOneAdult = 50.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 921.42f,
+ internationalPrimarySchoolYearlyForOneChild = 8950.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.67f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.0f,
+ onePairOfNikeRunningShoesMidRange = 63.33f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.0f,
+ monthlyPassRegularPrice = 20.0f,
+ taxiStartNormalTariff = 3.0f,
+ taxi1kmNormalTariff = 1.86f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22328.2f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1475.0f,
+ apartment3BedroomsInCityCentre = 2350.0f,
+ apartment3BedroomsOutsideOfCentre = 2625.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1883.68f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1614.59f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1200.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Moose Jaw",
+ country = "Canada",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.82f,
+ mealFor2PeopleMidRangeRestaurant = 55.59f,
+ mealAtMcDonaldSOrEquivalent = 8.89f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.29f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.16f,
+ waterAThirdOfLiterBottleInRestaurants = 1.65f,
+ milkRegularOneLiter = 1.48f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.15f,
+ banana1kg = 1.06f,
+ oranges1kg = 2.96f,
+ tomato1kg = 2.88f,
+ potato1kg = 1.91f,
+ onion1kg = 1.74f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.91f,
+ riceWhite1kg = 1.63f,
+ eggsRegular12 = 3.19f,
+ localCheese1kg = 10.28f,
+ chickenFillets1kg = 8.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 154.9f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.19f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 54.66f,
+ fitnessClubMonthlyFeeForOneAdult = 55.59f,
+ tennisCourtRentOneHourOnWeekend = 48.17f,
+ cinemaInternationalReleaseOneSeat = 7.41f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 567.6f,
+ internationalPrimarySchoolYearlyForOneChild = 7893.24f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 29.65f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.94f,
+ onePairOfNikeRunningShoesMidRange = 79.67f,
+ onePairOfMenLeatherBusinessShoes = 101.91f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.93f,
+ monthlyPassRegularPrice = 29.65f,
+ taxiStartNormalTariff = 2.59f,
+ taxi1kmNormalTariff = 0.56f,
+ taxi1hourWaitingNormalTariff = 22.23f,
+ gasolineOneLiter = 1.35f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20752.19f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20011.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1185.84f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Chetumal",
+ country = "Mexico",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.56f,
+ mealFor2PeopleMidRangeRestaurant = 23.21f,
+ mealAtMcDonaldSOrEquivalent = 5.06f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.84f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.71f,
+ waterAThirdOfLiterBottleInRestaurants = 0.61f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.72f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.84f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.37f,
+ tomato1kg = 1.55f,
+ potato1kg = 1.42f,
+ onion1kg = 1.03f,
+ lettuceOneHead = 0.93f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.55f,
+ riceWhite1kg = 1.16f,
+ eggsRegular12 = 1.5f,
+ localCheese1kg = 4.13f,
+ chickenFillets1kg = 4.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 99.25f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 27.21f,
+ fitnessClubMonthlyFeeForOneAdult = 18.05f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.09f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 61.88f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.1f,
+ onePairOfNikeRunningShoesMidRange = 77.35f,
+ onePairOfMenLeatherBusinessShoes = 51.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.57f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.24f,
+ taxi1kmNormalTariff = 1.29f,
+ taxi1hourWaitingNormalTariff = 3.48f,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 21246.42f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16759.92f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 198.49f,
+ apartmentOneBedroomOutsideOfCentre = 126.98f,
+ apartment3BedroomsInCityCentre = 398.77f,
+ apartment3BedroomsOutsideOfCentre = 326.44f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 626.31f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 309.41f
+ ),
+ averageMonthlyNetSalaryAfterTax = 257.84f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Kuysinjaq",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 2.06f,
+ mealFor2PeopleMidRangeRestaurant = 10.96f,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.37f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.34f,
+ waterAThirdOfLiterBottleInRestaurants = 0.17f,
+ milkRegularOneLiter = 1.03f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.34f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.69f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.03f,
+ tomato1kg = 0.51f,
+ potato1kg = 0.51f,
+ onion1kg = 0.51f,
+ lettuceOneHead = 0.34f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.69f,
+ riceWhite1kg = 1.03f,
+ eggsRegular12 = 1.37f,
+ localCheese1kg = 6.85f,
+ chickenFillets1kg = 3.43f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 8.22f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 34.26f,
+ fitnessClubMonthlyFeeForOneAdult = 13.7f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.28f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 57.1f,
+ internationalPrimarySchoolYearlyForOneChild = 1027.75f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 13.7f,
+ oneSummerDressInAChainStoreZaraHAndM = 17.13f,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = 17.13f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.37f,
+ taxi1kmNormalTariff = 0.69f,
+ taxi1hourWaitingNormalTariff = 3.43f,
+ gasolineOneLiter = 0.62f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16444.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 137.03f,
+ apartmentOneBedroomOutsideOfCentre = 102.78f,
+ apartment3BedroomsInCityCentre = 205.55f,
+ apartment3BedroomsOutsideOfCentre = 171.29f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 342.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 137.03f
+ ),
+ averageMonthlyNetSalaryAfterTax = 411.1f,
+ dataQuality = false
+ )
+ )
+
+ val averageFruitAndVegetables = listOf(
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = Float.NaN,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Keller",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 30.0f,
+ mealFor2PeopleMidRangeRestaurant = 75.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.8f,
+ waterAThirdOfLiterBottleInRestaurants = 1.17f,
+ milkRegularOneLiter = 0.88f,
+ waterOneAndHalfLiterBottleAtTheMarket = 3.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.13f,
+ banana1kg = 1.33f,
+ oranges1kg = 5.75f,
+ tomato1kg = 6.03f,
+ potato1kg = 4.05f,
+ onion1kg = 3.36f,
+ lettuceOneHead = 1.59f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.84f,
+ riceWhite1kg = 3.98f,
+ eggsRegular12 = 3.0f,
+ localCheese1kg = 15.08f,
+ chickenFillets1kg = 7.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 18.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 210.09f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = 39.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1125.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.0f,
+ onePairOfNikeRunningShoesMidRange = 92.5f,
+ onePairOfMenLeatherBusinessShoes = 200.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.12f,
+ taxi1kmNormalTariff = 1.12f,
+ taxi1hourWaitingNormalTariff = 18.0f,
+ gasolineOneLiter = 0.99f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 29880.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20425.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1521.67f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 3200.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 13.5f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Malden",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.33f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 2.0f,
+ oranges1kg = 6.61f,
+ tomato1kg = 5.51f,
+ potato1kg = 5.51f,
+ onion1kg = 4.4f,
+ lettuceOneHead = 2.03f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 6.17f,
+ eggsRegular12 = null,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 221.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 69.99f,
+ onePairOfMenLeatherBusinessShoes = 104.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.5f,
+ monthlyPassRegularPrice = 84.0f,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 10763.91f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 6458.35f
+ ),
+ averageMonthlyNetSalaryAfterTax = 14.9f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Pearl City",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.25f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.44f,
+ milkRegularOneLiter = 2.38f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.91f,
+ banana1kg = 3.84f,
+ oranges1kg = 7.02f,
+ tomato1kg = 5.94f,
+ potato1kg = 4.95f,
+ onion1kg = 4.44f,
+ lettuceOneHead = 2.74f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 4.41f,
+ riceWhite1kg = 7.33f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.13f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 26.46f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 251.16f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.12f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.55f,
+ oneSummerDressInAChainStoreZaraHAndM = 35.87f,
+ onePairOfNikeRunningShoesMidRange = 79.29f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 2000.0f,
+ apartmentOneBedroomOutsideOfCentre = 1750.0f,
+ apartment3BedroomsInCityCentre = 5000.0f,
+ apartment3BedroomsOutsideOfCentre = 4750.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 12.0f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Clayton",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 32.0f,
+ mealAtMcDonaldSOrEquivalent = 6.85f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.29f,
+ milkRegularOneLiter = 0.86f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.79f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.65f,
+ banana1kg = 1.34f,
+ oranges1kg = null,
+ tomato1kg = 2.43f,
+ potato1kg = null,
+ onion1kg = 1.94f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.48f,
+ riceWhite1kg = null,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.13f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 132.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.07f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1300.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 500f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Brevard",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.75f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.79f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.5f,
+ waterAThirdOfLiterBottleInRestaurants = 1.79f,
+ milkRegularOneLiter = 2.07f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.92f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.72f,
+ banana1kg = 1.26f,
+ oranges1kg = 4.23f,
+ tomato1kg = 5.49f,
+ potato1kg = 4.35f,
+ onion1kg = 3.17f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.6f,
+ riceWhite1kg = 3.56f,
+ eggsRegular12 = 2.59f,
+ localCheese1kg = 14.7f,
+ chickenFillets1kg = 11.02f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 118.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.69f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 54.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.5f,
+ onePairOfNikeRunningShoesMidRange = 78.33f,
+ onePairOfMenLeatherBusinessShoes = 141.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23750.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 975.0f,
+ apartment3BedroomsInCityCentre = 1700.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 600f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Woodlawn",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 11.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.2f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.33f,
+ waterAThirdOfLiterBottleInRestaurants = 1.5f,
+ milkRegularOneLiter = 1.1f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.85f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.03f,
+ banana1kg = 1.57f,
+ oranges1kg = 4.65f,
+ tomato1kg = 3.64f,
+ potato1kg = 2.69f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 1.73f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.74f,
+ riceWhite1kg = 3.38f,
+ eggsRegular12 = 1.79f,
+ localCheese1kg = 7.27f,
+ chickenFillets1kg = 4.39f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 11.02f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 122.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.03f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 800.0f,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 46.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.25f,
+ onePairOfNikeRunningShoesMidRange = 59.6f,
+ onePairOfMenLeatherBusinessShoes = 76.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.0f,
+ taxi1kmNormalTariff = 1.23f,
+ taxi1hourWaitingNormalTariff = 20.0f,
+ gasolineOneLiter = 1.16f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 25500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23666.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Brookdale",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = 50.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.27f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.87f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.4f,
+ banana1kg = 1.97f,
+ oranges1kg = 2.85f,
+ tomato1kg = 2.58f,
+ potato1kg = 1.42f,
+ onion1kg = 1.96f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 5.5f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.0f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 158.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.75f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 45.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 37.5f,
+ onePairOfNikeRunningShoesMidRange = 65.0f,
+ onePairOfMenLeatherBusinessShoes = 95.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2690.98f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Christiansburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 13.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.55f,
+ banana1kg = 2.7f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.04f,
+ potato1kg = 1.76f,
+ onion1kg = 2.89f,
+ lettuceOneHead = 1.65f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.64f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 10.71f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.04f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 162.37f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = 15.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 35000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 35.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 120.71f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.75f,
+ monthlyPassRegularPrice = 28.0f,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = 800.0f,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 3000f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Kernersville",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 1.63f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.95f,
+ potato1kg = 2.99f,
+ onion1kg = 2.78f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.99f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 8.07f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.65f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 149.11f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 975.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15125.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.75f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 91.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = 30.0f,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23166.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 23f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Airway Heights",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 77.5f,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.17f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.86f,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.7f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.86f,
+ banana1kg = 1.64f,
+ oranges1kg = 4.32f,
+ tomato1kg = 4.36f,
+ potato1kg = 2.17f,
+ onion1kg = 2.4f,
+ lettuceOneHead = 1.67f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.76f,
+ riceWhite1kg = 3.93f,
+ eggsRegular12 = 2.0f,
+ localCheese1kg = 12.61f,
+ chickenFillets1kg = 10.93f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.21f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 225.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.4f,
+ fitnessClubMonthlyFeeForOneAdult = 65.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 300.0f,
+ internationalPrimarySchoolYearlyForOneChild = 19750.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.67f,
+ onePairOfNikeRunningShoesMidRange = 86.86f,
+ onePairOfMenLeatherBusinessShoes = 94.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 3.0f,
+ monthlyPassRegularPrice = 60.0f,
+ taxiStartNormalTariff = 5.0f,
+ taxi1kmNormalTariff = 1.15f,
+ taxi1hourWaitingNormalTariff = 35.0f,
+ gasolineOneLiter = 1.27f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 18597.5f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17300.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1300.0f,
+ apartment3BedroomsInCityCentre = 1800.0f,
+ apartment3BedroomsOutsideOfCentre = 1800.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 6070.85f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 4886.82f
+ ),
+ averageMonthlyNetSalaryAfterTax = 13f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Vryheid",
+ country = "South Africa",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = null,
+ milkRegularOneLiter = 1.94f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.03f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.14f,
+ banana1kg = 1.71f,
+ oranges1kg = 0.97f,
+ tomato1kg = 1.31f,
+ potato1kg = 0.91f,
+ onion1kg = 1.08f,
+ lettuceOneHead = 1.08f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.93f,
+ riceWhite1kg = 3.71f,
+ eggsRegular12 = 2.51f,
+ localCheese1kg = 8.05f,
+ chickenFillets1kg = 3.82f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 5.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 114.05f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.43f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 256.62f,
+ internationalPrimarySchoolYearlyForOneChild = 1140.54f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 56.97f,
+ oneSummerDressInAChainStoreZaraHAndM = 42.71f,
+ onePairOfNikeRunningShoesMidRange = 102.65f,
+ onePairOfMenLeatherBusinessShoes = 116.28f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 0.6f,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = 3.99f,
+ gasolineOneLiter = 1.49f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 17672.6f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23586.27f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 324f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Mortsel",
+ country = "Belgium",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 23.18f,
+ mealFor2PeopleMidRangeRestaurant = 73.76f,
+ mealAtMcDonaldSOrEquivalent = 11.85f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.74f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.11f,
+ waterAThirdOfLiterBottleInRestaurants = 2.46f,
+ milkRegularOneLiter = 0.83f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.46f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.02f,
+ banana1kg = 1.55f,
+ oranges1kg = 1.48f,
+ tomato1kg = 2.51f,
+ potato1kg = 0.95f,
+ onion1kg = 1.58f,
+ lettuceOneHead = 0.95f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.88f,
+ riceWhite1kg = 1.48f,
+ eggsRegular12 = 2.25f,
+ localCheese1kg = 10.71f,
+ chickenFillets1kg = 7.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 14.01f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 180.01f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.49f,
+ fitnessClubMonthlyFeeForOneAdult = 31.6f,
+ tennisCourtRentOneHourOnWeekend = 15.81f,
+ cinemaInternationalReleaseOneSeat = 13.01f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1580.62f,
+ internationalPrimarySchoolYearlyForOneChild = 13171.82f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 79.03f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.88f,
+ onePairOfNikeRunningShoesMidRange = 94.84f,
+ onePairOfMenLeatherBusinessShoes = 105.37f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.63f,
+ monthlyPassRegularPrice = 51.63f,
+ taxiStartNormalTariff = 5.27f,
+ taxi1kmNormalTariff = 2.37f,
+ taxi1hourWaitingNormalTariff = 31.61f,
+ gasolineOneLiter = 2.08f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15279.31f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 15279.31f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 790.31f,
+ apartmentOneBedroomOutsideOfCentre = 737.62f,
+ apartment3BedroomsInCityCentre = 1475.24f,
+ apartment3BedroomsOutsideOfCentre = 1159.12f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2528.99f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2212.86f
+ ),
+ averageMonthlyNetSalaryAfterTax = 31f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Ridgecrest",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 20.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.67f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.67f,
+ waterAThirdOfLiterBottleInRestaurants = 1.47f,
+ milkRegularOneLiter = 1.11f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.5f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.0f,
+ banana1kg = 1.8f,
+ oranges1kg = 4.29f,
+ tomato1kg = 5.68f,
+ potato1kg = 2.64f,
+ onion1kg = 2.16f,
+ lettuceOneHead = 1.81f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.37f,
+ riceWhite1kg = 4.41f,
+ eggsRegular12 = 3.22f,
+ localCheese1kg = 6.61f,
+ chickenFillets1kg = 10.28f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.98f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 157.63f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.6f,
+ fitnessClubMonthlyFeeForOneAdult = 30.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 18.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1466.67f,
+ internationalPrimarySchoolYearlyForOneChild = 27500.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.85f,
+ oneSummerDressInAChainStoreZaraHAndM = 33.33f,
+ onePairOfNikeRunningShoesMidRange = 87.5f,
+ onePairOfMenLeatherBusinessShoes = 134.29f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.5f,
+ taxi1kmNormalTariff = 1.71f,
+ taxi1hourWaitingNormalTariff = 65.0f,
+ gasolineOneLiter = 1.68f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23292.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22741.5f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 14f,
+ dataQuality = false
+ )
+
+ )
+
+ val fashionShopping = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = false
+ )
+ )
+ val bananaCheapest = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = false
+ )
+ )
+
+ val costlierCity = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 200.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 300.0f,
+ apartmentOneBedroomOutsideOfCentre = 180.0f,
+ apartment3BedroomsInCityCentre = 800.0f,
+ apartment3BedroomsOutsideOfCentre = 550.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = 970.0f,
+ apartment3BedroomsInCityCentre = 2567.0f,
+ apartment3BedroomsOutsideOfCentre = 999.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Masin",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 6000.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Seoul",
+ country = "Korean",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 7000.0f,
+ apartment3BedroomsOutsideOfCentre = 100f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+ )
+
+ val cheapestInternet = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 15.0f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 120.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Damanhur",
+ country = "Egypt",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 3.05f,
+ mealFor2PeopleMidRangeRestaurant = 23.4f,
+ mealAtMcDonaldSOrEquivalent = 4.07f,
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.19f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.35f,
+ waterAThirdOfLiterBottleInRestaurants = 0.2f,
+ milkRegularOneLiter = 0.51f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.27f,
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.79f,
+ banana1kg = 0.61f,
+ oranges1kg = 0.41f,
+ tomato1kg = 0.24f,
+ potato1kg = 0.27f,
+ onion1kg = 0.18f,
+ lettuceOneHead = 0.09f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.54f,
+ riceWhite1kg = 0.52f,
+ eggsRegular12 = 0.98f,
+ localCheese1kg = 1.42f,
+ chickenFillets1kg = 2.92f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.33f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 47.48f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 12.21f,
+ fitnessClubMonthlyFeeForOneAdult = 16.28f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 40.7f,
+ internationalPrimarySchoolYearlyForOneChild = 915.7f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 12.21f,
+ oneSummerDressInAChainStoreZaraHAndM = 10.17f,
+ onePairOfNikeRunningShoesMidRange = 122.09f,
+ onePairOfMenLeatherBusinessShoes = 24.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.08f,
+ monthlyPassRegularPrice = 8.14f,
+ taxiStartNormalTariff = 0.35f,
+ taxi1kmNormalTariff = 0.16f,
+ taxi1hourWaitingNormalTariff = 1.63f,
+ gasolineOneLiter = 0.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15261.71f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17296.61f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1017.45f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 203.49f
+ ),
+ averageMonthlyNetSalaryAfterTax = 81.4f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "cairo",
+ country = "Egypt",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 5.05f,
+ mealFor2PeopleMidRangeRestaurant = 23.4f,
+ mealAtMcDonaldSOrEquivalent = 6.07f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 7.19f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 8.35f,
+ waterAThirdOfLiterBottleInRestaurants = 0.2f,
+ milkRegularOneLiter = 0.51f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.27f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.79f,
+ banana1kg = 0.61f,
+ oranges1kg = 0.41f,
+ tomato1kg = 0.24f,
+ potato1kg = 0.27f,
+ onion1kg = 0.18f,
+ lettuceOneHead = 0.09f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.54f,
+ riceWhite1kg = 0.52f,
+ eggsRegular12 = 0.98f,
+ localCheese1kg = 1.42f,
+ chickenFillets1kg = 2.92f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.33f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 47.48f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 52.21f,
+ fitnessClubMonthlyFeeForOneAdult = 16.28f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 40.7f,
+ internationalPrimarySchoolYearlyForOneChild = 915.7f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 12.21f,
+ oneSummerDressInAChainStoreZaraHAndM = 10.17f,
+ onePairOfNikeRunningShoesMidRange = 122.09f,
+ onePairOfMenLeatherBusinessShoes = 24.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.08f,
+ monthlyPassRegularPrice = 8.14f,
+ taxiStartNormalTariff = 0.35f,
+ taxi1kmNormalTariff = 0.16f,
+ taxi1hourWaitingNormalTariff = 1.63f,
+ gasolineOneLiter = 0.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 15261.71f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17296.61f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1017.45f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 203.49f
+ ),
+ averageMonthlyNetSalaryAfterTax = 81.4f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Dushanbe",
+ country = "Tajikistan",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 3.97f,
+ mealFor2PeopleMidRangeRestaurant = 11.0f,
+ mealAtMcDonaldSOrEquivalent = 4.96f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.2f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.41f,
+ waterAThirdOfLiterBottleInRestaurants = 0.28f,
+ milkRegularOneLiter = 0.72f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.43f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.15f,
+ banana1kg = 2.24f,
+ oranges1kg = 2.3f,
+ tomato1kg = 1.19f,
+ potato1kg = 0.44f,
+ onion1kg = 0.31f,
+ lettuceOneHead = 0.42f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.41f,
+ riceWhite1kg = 1.58f,
+ eggsRegular12 = 1.56f,
+ localCheese1kg = 5.77f,
+ chickenFillets1kg = 3.9f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.84f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 31.26f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 22.17f,
+ fitnessClubMonthlyFeeForOneAdult = 34.86f,
+ tennisCourtRentOneHourOnWeekend = 11.17f,
+ cinemaInternationalReleaseOneSeat = 5.21f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 84.39f,
+ internationalPrimarySchoolYearlyForOneChild = 4964.41f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 32.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 24.07f,
+ onePairOfNikeRunningShoesMidRange = 53.36f,
+ onePairOfMenLeatherBusinessShoes = 52.12f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.25f,
+ monthlyPassRegularPrice = 6.95f,
+ taxiStartNormalTariff = 0.99f,
+ taxi1kmNormalTariff = 0.3f,
+ taxi1hourWaitingNormalTariff = 2.38f,
+ gasolineOneLiter = 0.94f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 14392.29f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21839.84f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 376.03f,
+ apartmentOneBedroomOutsideOfCentre = 186.15f,
+ apartment3BedroomsInCityCentre = 631.14f,
+ apartment3BedroomsOutsideOfCentre = 330.47f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 835.59f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 381.24f
+ ),
+ averageMonthlyNetSalaryAfterTax = 163.81f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Vila Real de Santo Antonio",
+ country = "Portugal",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.54f,
+ mealFor2PeopleMidRangeRestaurant = 52.69f,
+ mealAtMcDonaldSOrEquivalent = 7.11f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.3f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.48f,
+ waterAThirdOfLiterBottleInRestaurants = 1.06f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.53f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.44f,
+ banana1kg = 1.07f,
+ oranges1kg = 1.36f,
+ tomato1kg = 1.92f,
+ potato1kg = 1.05f,
+ onion1kg = 0.93f,
+ lettuceOneHead = 0.95f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.35f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 1.93f,
+ localCheese1kg = 11.24f,
+ chickenFillets1kg = 6.4f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.89f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 106.81f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.04f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 33.72f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 7.17f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 189.67f,
+ internationalPrimarySchoolYearlyForOneChild = 6322.47f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 72.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.81f,
+ onePairOfNikeRunningShoesMidRange = 74.93f,
+ onePairOfMenLeatherBusinessShoes = 47.42f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.95f,
+ monthlyPassRegularPrice = 24.24f,
+ taxiStartNormalTariff = 3.42f,
+ taxi1kmNormalTariff = 0.47f,
+ taxi1hourWaitingNormalTariff = 15.81f,
+ gasolineOneLiter = 2.02f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 28977.99f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 27397.38f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2634.36f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 843.0f
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Samarkand",
+ country = "Uzbekistan",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 5.0f,
+ mealFor2PeopleMidRangeRestaurant = 19.44f,
+ mealAtMcDonaldSOrEquivalent = 3.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.55f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.6f,
+ waterAThirdOfLiterBottleInRestaurants = 0.29f,
+ milkRegularOneLiter = 0.99f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.3f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.42f,
+ banana1kg = 1.71f,
+ oranges1kg = 2.28f,
+ tomato1kg = 1.48f,
+ potato1kg = 0.48f,
+ onion1kg = 0.36f,
+ lettuceOneHead = 0.3f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.27f,
+ riceWhite1kg = 1.2f,
+ eggsRegular12 = 1.49f,
+ localCheese1kg = 6.08f,
+ chickenFillets1kg = 3.64f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 7.26f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 32.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.02f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 15.0f,
+ fitnessClubMonthlyFeeForOneAdult = 36.67f,
+ tennisCourtRentOneHourOnWeekend = 11.0f,
+ cinemaInternationalReleaseOneSeat = 1.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 200.0f,
+ internationalPrimarySchoolYearlyForOneChild = 5622.48f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 80.0f,
+ onePairOfMenLeatherBusinessShoes = 99.12f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.15f,
+ monthlyPassRegularPrice = 10.0f,
+ taxiStartNormalTariff = 0.5f,
+ taxi1kmNormalTariff = 0.27f,
+ taxi1hourWaitingNormalTariff = 3.0f,
+ gasolineOneLiter = 0.91f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 13508.25f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 19690.73f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 275.0f,
+ apartmentOneBedroomOutsideOfCentre = 206.67f,
+ apartment3BedroomsInCityCentre = 500.0f,
+ apartment3BedroomsOutsideOfCentre = 383.33f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 730.67f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 482.64f
+ ),
+ averageMonthlyNetSalaryAfterTax = 253.33f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Malabo",
+ country = "Equatorial Guinea",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.85f,
+ mealFor2PeopleMidRangeRestaurant = 40.16f,
+ mealAtMcDonaldSOrEquivalent = 20.08f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 6.43f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.07f,
+ waterAThirdOfLiterBottleInRestaurants = 1.2f,
+ milkRegularOneLiter = 2.25f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.91f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.62f,
+ banana1kg = 2.81f,
+ oranges1kg = 4.02f,
+ tomato1kg = 2.81f,
+ potato1kg = 4.26f,
+ onion1kg = 4.02f,
+ lettuceOneHead = 0.91f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.2f,
+ riceWhite1kg = 1.61f,
+ eggsRegular12 = 1.93f,
+ localCheese1kg = null,
+ chickenFillets1kg = 4.82f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 4.02f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 46.59f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.27f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 160.64f,
+ fitnessClubMonthlyFeeForOneAdult = 54.89f,
+ tennisCourtRentOneHourOnWeekend = 28.02f,
+ cinemaInternationalReleaseOneSeat = 7.26f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 68.27f,
+ internationalPrimarySchoolYearlyForOneChild = 1743.37f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 24.1f,
+ oneSummerDressInAChainStoreZaraHAndM = 77.64f,
+ onePairOfNikeRunningShoesMidRange = 240.96f,
+ onePairOfMenLeatherBusinessShoes = 72.29f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.61f,
+ monthlyPassRegularPrice = 44.3f,
+ taxiStartNormalTariff = 0.8f,
+ taxi1kmNormalTariff = 0.8f,
+ taxi1hourWaitingNormalTariff = 6.43f,
+ gasolineOneLiter = 0.78f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 22048.18f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 32218.45f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 200.8f,
+ apartmentOneBedroomOutsideOfCentre = 112.45f,
+ apartment3BedroomsInCityCentre = 722.89f,
+ apartment3BedroomsOutsideOfCentre = 361.45f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 321.28f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Dehra Dun",
+ country = "India",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 1.84f,
+ mealFor2PeopleMidRangeRestaurant = 18.42f,
+ mealAtMcDonaldSOrEquivalent = 5.22f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.41f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.37f,
+ waterAThirdOfLiterBottleInRestaurants = 0.19f,
+ milkRegularOneLiter = 0.71f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.37f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 1.45f,
+ banana1kg = 0.67f,
+ oranges1kg = 0.93f,
+ tomato1kg = 0.54f,
+ potato1kg = 0.32f,
+ onion1kg = 0.43f,
+ lettuceOneHead = 0.52f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.44f,
+ riceWhite1kg = 0.56f,
+ eggsRegular12 = 0.88f,
+ localCheese1kg = 4.38f,
+ chickenFillets1kg = 3.19f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 3.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 58.34f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.01f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 8.75f,
+ fitnessClubMonthlyFeeForOneAdult = 17.69f,
+ tennisCourtRentOneHourOnWeekend = 11.05f,
+ cinemaInternationalReleaseOneSeat = 4.3f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 51.28f,
+ internationalPrimarySchoolYearlyForOneChild = 1321.52f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 28.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.63f,
+ onePairOfNikeRunningShoesMidRange = 63.87f,
+ onePairOfMenLeatherBusinessShoes = 51.58f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.43f,
+ monthlyPassRegularPrice = 4.91f,
+ taxiStartNormalTariff = 0.61f,
+ taxi1kmNormalTariff = 0.2f,
+ taxi1hourWaitingNormalTariff = 1.84f,
+ gasolineOneLiter = 1.21f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 18422.64f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 145.85f,
+ apartmentOneBedroomOutsideOfCentre = 74.92f,
+ apartment3BedroomsInCityCentre = 331.61f,
+ apartment3BedroomsOutsideOfCentre = 186.68f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2897.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 615.45f
+ ),
+ averageMonthlyNetSalaryAfterTax = 358.14f,
+ dataQuality = true
+ )
+ )
+
+ val cheapestApartmentsInCities = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = true
+ ),
+
+ CityEntity(
+ cityName = "Domyat",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 60f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Popeye Village",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 200f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Hallstatt",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Simiane La Rotonde",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 800f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Cinque Terre",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 900f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Ortahisar",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Oia",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1200f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Shirakawa-go",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Ait Ben-Haddou",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1700f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Cua Van",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Alberobello",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2500f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Júzcar",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2700f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Reine",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 5000f
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ )
+ )
+
+ val citiesAverageSalary = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = true
+ )
+ )
+
+ val invalidData = listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = null,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = null
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = null,
+ banana1kg = null,
+ oranges1kg = null,
+ tomato1kg = null,
+ potato1kg = null,
+ onion1kg = null,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = null,
+ eggsRegular12 = null,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+
+ )
+
+ val empty = emptyList()
+
+ val countriesTaxes = listOf(
+ CityEntity(
+ cityName = "Great Falls",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 9.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.02f,
+ waterAThirdOfLiterBottleInRestaurants = 1.71f,
+ milkRegularOneLiter = 1.02f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.86f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.41f,
+ banana1kg = 1.58f,
+ oranges1kg = 3.93f,
+ tomato1kg = 4.41f,
+ potato1kg = 1.65f,
+ onion1kg = 2.08f,
+ lettuceOneHead = 1.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.95f,
+ riceWhite1kg = 4.12f,
+ eggsRegular12 = 3.25f,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = 11.01f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.23f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 145.61f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.15f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 65.83f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 2500.0f,
+ internationalPrimarySchoolYearlyForOneChild = 75000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.25f,
+ oneSummerDressInAChainStoreZaraHAndM = 27.5f,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = 120.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.5f,
+ monthlyPassRegularPrice = 55.0f,
+ taxiStartNormalTariff = 9.5f,
+ taxi1kmNormalTariff = 1.46f,
+ taxi1hourWaitingNormalTariff = 25.0f,
+ gasolineOneLiter = 1.44f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 31000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 750.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1600.0f,
+ apartment3BedroomsOutsideOfCentre = 2250.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2583.34f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 7965.29f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000.0f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Roseburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.49f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.22f,
+ waterAThirdOfLiterBottleInRestaurants = 1.26f,
+ milkRegularOneLiter = 0.98f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.3f,
+ banana1kg = 0.99f,
+ oranges1kg = 2.2f,
+ tomato1kg = 1.1f,
+ potato1kg = 1.71f,
+ onion1kg = 1.62f,
+ lettuceOneHead = 1.83f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.04f,
+ riceWhite1kg = 2.2f,
+ eggsRegular12 = 1.69f,
+ localCheese1kg = 12.9f,
+ chickenFillets1kg = 16.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.49f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 100.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.25f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 55.0f,
+ fitnessClubMonthlyFeeForOneAdult = 50.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 921.42f,
+ internationalPrimarySchoolYearlyForOneChild = 8950.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.67f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.0f,
+ onePairOfNikeRunningShoesMidRange = 63.33f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.0f,
+ monthlyPassRegularPrice = 20.0f,
+ taxiStartNormalTariff = 3.0f,
+ taxi1kmNormalTariff = 1.86f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22328.2f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1475.0f,
+ apartment3BedroomsInCityCentre = 2350.0f,
+ apartment3BedroomsOutsideOfCentre = 2625.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1883.68f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1614.59f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1200.0f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Moose Jaw",
+ country = "Canada",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.82f,
+ mealFor2PeopleMidRangeRestaurant = 55.59f,
+ mealAtMcDonaldSOrEquivalent = 8.89f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.29f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.16f,
+ waterAThirdOfLiterBottleInRestaurants = 1.65f,
+ milkRegularOneLiter = 1.48f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.15f,
+ banana1kg = 1.06f,
+ oranges1kg = 2.96f,
+ tomato1kg = 2.88f,
+ potato1kg = 1.91f,
+ onion1kg = 1.74f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.91f,
+ riceWhite1kg = 1.63f,
+ eggsRegular12 = 3.19f,
+ localCheese1kg = 10.28f,
+ chickenFillets1kg = 8.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 154.9f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.19f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 54.66f,
+ fitnessClubMonthlyFeeForOneAdult = 55.59f,
+ tennisCourtRentOneHourOnWeekend = 48.17f,
+ cinemaInternationalReleaseOneSeat = 7.41f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 567.6f,
+ internationalPrimarySchoolYearlyForOneChild = 7893.24f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 29.65f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.94f,
+ onePairOfNikeRunningShoesMidRange = 79.67f,
+ onePairOfMenLeatherBusinessShoes = 101.91f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.93f,
+ monthlyPassRegularPrice = 29.65f,
+ taxiStartNormalTariff = 2.59f,
+ taxi1kmNormalTariff = 0.56f,
+ taxi1hourWaitingNormalTariff = 22.23f,
+ gasolineOneLiter = 1.35f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20752.19f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20011.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1185.84f,
+ dataQuality = true
+ ), CityEntity(
+ cityName = "Chetumal",
+ country = "Mexico",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.56f,
+ mealFor2PeopleMidRangeRestaurant = 23.21f,
+ mealAtMcDonaldSOrEquivalent = 5.06f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.84f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.71f,
+ waterAThirdOfLiterBottleInRestaurants = 0.61f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.72f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.84f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.37f,
+ tomato1kg = 1.55f,
+ potato1kg = 1.42f,
+ onion1kg = 1.03f,
+ lettuceOneHead = 0.93f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.55f,
+ riceWhite1kg = 1.16f,
+ eggsRegular12 = 1.5f,
+ localCheese1kg = 4.13f,
+ chickenFillets1kg = 4.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 99.25f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 27.21f,
+ fitnessClubMonthlyFeeForOneAdult = 18.05f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.09f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 61.88f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.1f,
+ onePairOfNikeRunningShoesMidRange = 77.35f,
+ onePairOfMenLeatherBusinessShoes = 51.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.57f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.24f,
+ taxi1kmNormalTariff = 1.29f,
+ taxi1hourWaitingNormalTariff = 3.48f,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 21246.42f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16759.92f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 198.49f,
+ apartmentOneBedroomOutsideOfCentre = 126.98f,
+ apartment3BedroomsInCityCentre = 398.77f,
+ apartment3BedroomsOutsideOfCentre = 326.44f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 626.31f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 309.41f
+ ),
+ averageMonthlyNetSalaryAfterTax = 257.84f,
+ dataQuality = true
+ ),
+ CityEntity(
+ cityName = "Kuysinjaq",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 2.06f,
+ mealFor2PeopleMidRangeRestaurant = 10.96f,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.37f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.34f,
+ waterAThirdOfLiterBottleInRestaurants = 0.17f,
+ milkRegularOneLiter = 1.03f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.34f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.69f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.03f,
+ tomato1kg = 0.51f,
+ potato1kg = 0.51f,
+ onion1kg = 0.51f,
+ lettuceOneHead = 0.34f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.69f,
+ riceWhite1kg = 1.03f,
+ eggsRegular12 = 1.37f,
+ localCheese1kg = 6.85f,
+ chickenFillets1kg = 3.43f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 8.22f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 34.26f,
+ fitnessClubMonthlyFeeForOneAdult = 13.7f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.28f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 57.1f,
+ internationalPrimarySchoolYearlyForOneChild = 1027.75f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 13.7f,
+ oneSummerDressInAChainStoreZaraHAndM = 17.13f,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = 17.13f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.37f,
+ taxi1kmNormalTariff = 0.69f,
+ taxi1hourWaitingNormalTariff = 3.43f,
+ gasolineOneLiter = 0.62f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16444.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 137.03f,
+ apartmentOneBedroomOutsideOfCentre = 102.78f,
+ apartment3BedroomsInCityCentre = 205.55f,
+ apartment3BedroomsOutsideOfCentre = 171.29f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 342.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 137.03f
+ ),
+ averageMonthlyNetSalaryAfterTax = 411.1f,
+ dataQuality = true
+ )
+ )
+
+ val bestCityForSavingMoney = listOf(
+
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.2f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1000.0f,
+ apartmentOneBedroomOutsideOfCentre = 100.0f,
+ apartment3BedroomsInCityCentre = 1000.0f,
+ apartment3BedroomsOutsideOfCentre = 100.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1111.1f
+ ),
+ averageMonthlyNetSalaryAfterTax = 90000000.0f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Keller",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 30.0f,
+ mealFor2PeopleMidRangeRestaurant = 75.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.5f,
+ waterAThirdOfLiterBottleInRestaurants = 1.17f,
+ milkRegularOneLiter = 0.88f,
+ waterOneAndHalfLiterBottleAtTheMarket = 3.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.13f,
+ banana1kg = 1.33f,
+ oranges1kg = 5.75f,
+ tomato1kg = 6.03f,
+ potato1kg = 4.05f,
+ onion1kg = 3.36f,
+ lettuceOneHead = 1.59f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.84f,
+ riceWhite1kg = 3.98f,
+ eggsRegular12 = 3.0f,
+ localCheese1kg = 15.08f,
+ chickenFillets1kg = 7.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 18.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 210.09f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = 39.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1125.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.0f,
+ onePairOfNikeRunningShoesMidRange = 92.5f,
+ onePairOfMenLeatherBusinessShoes = 200.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.12f,
+ taxi1kmNormalTariff = 1.12f,
+ taxi1hourWaitingNormalTariff = 18.0f,
+ gasolineOneLiter = 0.99f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 29880.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20425.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1521.67f,
+ apartmentOneBedroomOutsideOfCentre = 1111.1f,
+ apartment3BedroomsInCityCentre = 3200.0f,
+ apartment3BedroomsOutsideOfCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1111.1f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1111.1f
+ ),
+ averageMonthlyNetSalaryAfterTax = 5555.5f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Malden",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.33f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 2.0f,
+ oranges1kg = 6.61f,
+ tomato1kg = 5.51f,
+ potato1kg = 5.51f,
+ onion1kg = 4.4f,
+ lettuceOneHead = 2.03f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 6.17f,
+ eggsRegular12 = null,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 221.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 69.99f,
+ onePairOfMenLeatherBusinessShoes = 104.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.5f,
+ monthlyPassRegularPrice = 84.0f,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 10763.91f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 6458.35f
+ ),
+ averageMonthlyNetSalaryAfterTax = 14.9f,
+ dataQuality = false
+ ),
+
+
+ CityEntity(
+ cityName = "Pearl City",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.25f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1000.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.44f,
+ milkRegularOneLiter = 2.38f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.91f,
+ banana1kg = 3.84f,
+ oranges1kg = 7.02f,
+ tomato1kg = 5.94f,
+ potato1kg = 4.95f,
+ onion1kg = 4.44f,
+ lettuceOneHead = 2.74f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 4.41f,
+ riceWhite1kg = 7.33f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.13f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 26.46f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 251.16f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.12f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.55f,
+ oneSummerDressInAChainStoreZaraHAndM = 35.87f,
+ onePairOfNikeRunningShoesMidRange = 79.29f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 2000.0f,
+ apartmentOneBedroomOutsideOfCentre = 1750.0f,
+ apartment3BedroomsInCityCentre = 5000.0f,
+ apartment3BedroomsOutsideOfCentre = 4750.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 4000.0f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 3500.0f
+ ),
+ averageMonthlyNetSalaryAfterTax = 9000.0f,
+ dataQuality = false
+ )
+
+ )
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/FashionShoppingFakeData.kt b/src/test/kotlin/data/FashionShoppingFakeData.kt
new file mode 100644
index 000000000..3d53c8418
--- /dev/null
+++ b/src/test/kotlin/data/FashionShoppingFakeData.kt
@@ -0,0 +1,234 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class FashionShoppingFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Santiago de Cuba",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 6.5f,
+ mealFor2PeopleMidRangeRestaurant = 15.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 3.8f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 11.02f,
+ banana1kg = 0.44f,
+ oranges1kg = 1.1f,
+ tomato1kg = 0.88f,
+ potato1kg = 1.1f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 0.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.1f,
+ riceWhite1kg = 1.1f,
+ eggsRegular12 = 2.03f,
+ localCheese1kg = 9.0f,
+ chickenFillets1kg = 6.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 6.61f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.1f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 40.0f,
+ onePairOfNikeRunningShoesMidRange = 60.0f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = 0.7f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 600.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 18f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Sancti Spiritus",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 7.0f,
+ mealFor2PeopleMidRangeRestaurant = 25.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.75f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.0f,
+ banana1kg = 0.5f,
+ oranges1kg = 0.5f,
+ tomato1kg = 1.0f,
+ potato1kg = 2.0f,
+ onion1kg = 2.0f,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 5.0f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 30.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 25.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 15.0f,
+ onePairOfNikeRunningShoesMidRange = 40.0f,
+ onePairOfMenLeatherBusinessShoes = 30.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 1.0f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 2.0f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 50000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 70000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 20.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Santa Clara",
+ country = "Cuba",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 30.0f,
+ mealAtMcDonaldSOrEquivalent = 5.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.91f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 0.5f,
+ milkRegularOneLiter = 3.52f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 6.24f,
+ banana1kg = null,
+ oranges1kg = 1.12f,
+ tomato1kg = 1.0f,
+ potato1kg = 1.82f,
+ onion1kg = 2.0f,
+ lettuceOneHead = 0.86f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.0f,
+ riceWhite1kg = 1.0f,
+ eggsRegular12 = 1.64f,
+ localCheese1kg = 4.0f,
+ chickenFillets1kg = 6.07f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 11.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 80.0f,
+ fitnessClubMonthlyFeeForOneAdult = 6.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 1.12f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 70.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15166.67f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 55.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 44.33f,
+ onePairOfNikeRunningShoesMidRange = 79.17f,
+ onePairOfMenLeatherBusinessShoes = 78.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.5f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.0f,
+ taxi1kmNormalTariff = 0.5f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.14f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 80000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 81500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 25.0f,
+ dataQuality = false
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/FruitsAndVegetablesFakeData.kt b/src/test/kotlin/data/FruitsAndVegetablesFakeData.kt
new file mode 100644
index 000000000..ed66f4c67
--- /dev/null
+++ b/src/test/kotlin/data/FruitsAndVegetablesFakeData.kt
@@ -0,0 +1,986 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class FruitsAndVegetablesFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+
+ // region City 1
+ CityEntity(
+ cityName = "Moncks Corner",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.5f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.0f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.75f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.1f,
+ banana1kg = 0.1f,
+ oranges1kg = 0.1f,
+ tomato1kg = 0.1f,
+ potato1kg = 0.1f,
+ onion1kg = 0.1f,
+ lettuceOneHead = 0.1f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.2f,
+ riceWhite1kg = 2.62f,
+ eggsRegular12 = 2.17f,
+ localCheese1kg = 11.02f,
+ chickenFillets1kg = 8.8f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 15.76f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 144.92f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.0f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.78f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1500.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 52.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 46.33f,
+ onePairOfNikeRunningShoesMidRange = 94.67f,
+ onePairOfMenLeatherBusinessShoes = 90.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.1f,
+ taxi1kmNormalTariff = 1.49f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 0.92f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 28500.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = Float.NaN,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 2
+ CityEntity(
+ cityName = "Keller",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 30.0f,
+ mealFor2PeopleMidRangeRestaurant = 75.0f,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.33f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.8f,
+ waterAThirdOfLiterBottleInRestaurants = 1.17f,
+ milkRegularOneLiter = 0.88f,
+ waterOneAndHalfLiterBottleAtTheMarket = 3.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.13f,
+ banana1kg = 1.33f,
+ oranges1kg = 5.75f,
+ tomato1kg = 6.03f,
+ potato1kg = 4.05f,
+ onion1kg = 3.36f,
+ lettuceOneHead = 1.59f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.84f,
+ riceWhite1kg = 3.98f,
+ eggsRegular12 = 3.0f,
+ localCheese1kg = 15.08f,
+ chickenFillets1kg = 7.61f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 18.7f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 210.09f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = 39.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 9.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 1125.0f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.0f,
+ onePairOfNikeRunningShoesMidRange = 92.5f,
+ onePairOfMenLeatherBusinessShoes = 200.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 3.12f,
+ taxi1kmNormalTariff = 1.12f,
+ taxi1hourWaitingNormalTariff = 18.0f,
+ gasolineOneLiter = 0.99f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 29880.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20425.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1521.67f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 3200.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 13.5f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 3
+ CityEntity(
+ cityName = "Malden",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 7.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.33f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 2.0f,
+ oranges1kg = 6.61f,
+ tomato1kg = 5.51f,
+ potato1kg = 5.51f,
+ onion1kg = 4.4f,
+ lettuceOneHead = 2.03f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 6.17f,
+ eggsRegular12 = null,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 221.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 67.8f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.66f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.0f,
+ onePairOfNikeRunningShoesMidRange = 69.99f,
+ onePairOfMenLeatherBusinessShoes = 104.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.5f,
+ monthlyPassRegularPrice = 84.0f,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 10763.91f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 6458.35f
+ ),
+ averageMonthlyNetSalaryAfterTax = 14.9f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 4
+ CityEntity(
+ cityName = "Pearl",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.25f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.44f,
+ milkRegularOneLiter = 2.38f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 5.91f,
+ banana1kg = 3.84f,
+ oranges1kg = 7.02f,
+ tomato1kg = 5.94f,
+ potato1kg = 4.95f,
+ onion1kg = 4.44f,
+ lettuceOneHead = 2.74f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 4.41f,
+ riceWhite1kg = 7.33f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.13f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 26.46f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 251.16f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.12f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.55f,
+ oneSummerDressInAChainStoreZaraHAndM = 35.87f,
+ onePairOfNikeRunningShoesMidRange = 79.29f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 2000.0f,
+ apartmentOneBedroomOutsideOfCentre = 1750.0f,
+ apartment3BedroomsInCityCentre = 5000.0f,
+ apartment3BedroomsOutsideOfCentre = 4750.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 12.0f,
+ dataQuality = false
+ ),
+
+ // endregion
+
+ // region City 5
+ CityEntity(
+ cityName = "Clayton",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 10.0f,
+ mealFor2PeopleMidRangeRestaurant = 32.0f,
+ mealAtMcDonaldSOrEquivalent = 6.85f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.29f,
+ milkRegularOneLiter = 0.86f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.79f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.65f,
+ banana1kg = 1.34f,
+ oranges1kg = 1.2f,
+ tomato1kg = 2.43f,
+ potato1kg = 43f,
+ onion1kg = 1.94f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.48f,
+ riceWhite1kg = null,
+ eggsRegular12 = 2.4f,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.13f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 132.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.07f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1300.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 500f,
+ dataQuality = false
+ ),
+
+ // endregion
+
+ // region City 6
+ CityEntity(
+ cityName = "Brevard",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.75f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.79f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 1.5f,
+ waterAThirdOfLiterBottleInRestaurants = 1.79f,
+ milkRegularOneLiter = 2.07f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.92f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.72f,
+ banana1kg = 1.26f,
+ oranges1kg = 4.23f,
+ tomato1kg = 5.49f,
+ potato1kg = 4.35f,
+ onion1kg = 3.17f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.6f,
+ riceWhite1kg = 3.56f,
+ eggsRegular12 = 2.59f,
+ localCheese1kg = 14.7f,
+ chickenFillets1kg = 11.02f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.0f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 118.5f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = 60.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.69f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 54.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 50.5f,
+ onePairOfNikeRunningShoesMidRange = 78.33f,
+ onePairOfMenLeatherBusinessShoes = 141.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23750.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 975.0f,
+ apartment3BedroomsInCityCentre = 1700.0f,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 600f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 7
+ CityEntity(
+ cityName = "Woodlawn",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 11.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.2f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.33f,
+ waterAThirdOfLiterBottleInRestaurants = 1.5f,
+ milkRegularOneLiter = 1.1f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.85f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.03f,
+ banana1kg = 1.57f,
+ oranges1kg = 4.65f,
+ tomato1kg = 3.64f,
+ potato1kg = 2.69f,
+ onion1kg = 2.2f,
+ lettuceOneHead = 1.73f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.74f,
+ riceWhite1kg = 3.38f,
+ eggsRegular12 = 1.79f,
+ localCheese1kg = 7.27f,
+ chickenFillets1kg = 4.39f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 11.02f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 122.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.03f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.25f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 800.0f,
+ internationalPrimarySchoolYearlyForOneChild = 5000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 46.5f,
+ oneSummerDressInAChainStoreZaraHAndM = 26.25f,
+ onePairOfNikeRunningShoesMidRange = 59.6f,
+ onePairOfMenLeatherBusinessShoes = 76.67f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.0f,
+ taxi1kmNormalTariff = 1.23f,
+ taxi1hourWaitingNormalTariff = 20.0f,
+ gasolineOneLiter = 1.16f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 25500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23666.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 8
+ CityEntity(
+ cityName = "Brookdale",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = 50.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.0f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = 1.27f,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.87f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.4f,
+ banana1kg = 1.97f,
+ oranges1kg = 2.85f,
+ tomato1kg = 2.58f,
+ potato1kg = 1.42f,
+ onion1kg = 1.96f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = 5.5f,
+ eggsRegular12 = null,
+ localCheese1kg = 12.0f,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 158.47f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.33f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 11.75f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 45.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 37.5f,
+ onePairOfNikeRunningShoesMidRange = 65.0f,
+ onePairOfMenLeatherBusinessShoes = 95.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = null
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2690.98f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 2690.98f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000f,
+ dataQuality = false
+ ),
+
+ // endregion
+
+ // region City 9
+ CityEntity(
+ cityName = "Christiansburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 13.0f,
+ mealFor2PeopleMidRangeRestaurant = 45.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.91f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.08f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.55f,
+ banana1kg = 2.7f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.04f,
+ potato1kg = 1.76f,
+ onion1kg = 2.89f,
+ lettuceOneHead = 1.65f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.64f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 10.71f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.04f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 162.37f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = 15.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = 35000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 35.0f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 120.71f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.75f,
+ monthlyPassRegularPrice = 28.0f,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = 800.0f,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 3000f,
+ dataQuality = false
+ ),
+
+ // endregion
+
+ // region City 10
+ CityEntity(
+ cityName = "Kernersville",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 7.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.77f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.0f,
+ waterAThirdOfLiterBottleInRestaurants = 1.34f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 2.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.92f,
+ banana1kg = 1.63f,
+ oranges1kg = 4.62f,
+ tomato1kg = 3.95f,
+ potato1kg = 2.99f,
+ onion1kg = 2.78f,
+ lettuceOneHead = 1.5f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.99f,
+ riceWhite1kg = 4.09f,
+ eggsRegular12 = 2.5f,
+ localCheese1kg = 8.07f,
+ chickenFillets1kg = 11.76f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.65f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 149.11f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.22f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.37f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 975.0f,
+ internationalPrimarySchoolYearlyForOneChild = 15125.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 40.75f,
+ oneSummerDressInAChainStoreZaraHAndM = 31.99f,
+ onePairOfNikeRunningShoesMidRange = 71.25f,
+ onePairOfMenLeatherBusinessShoes = 91.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 2.5f,
+ taxi1kmNormalTariff = 1.09f,
+ taxi1hourWaitingNormalTariff = 30.0f,
+ gasolineOneLiter = 1.15f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 23500.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23166.67f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 23f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 11
+ CityEntity(
+ cityName = "Airway Heights",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 77.5f,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.17f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.86f,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.7f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = null,
+ banana1kg = null,
+ oranges1kg = null,
+ tomato1kg = null,
+ potato1kg = null,
+ onion1kg = null,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.76f,
+ riceWhite1kg = 3.93f,
+ eggsRegular12 = 2.0f,
+ localCheese1kg = 12.61f,
+ chickenFillets1kg = 10.93f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.21f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 225.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.4f,
+ fitnessClubMonthlyFeeForOneAdult = 65.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 300.0f,
+ internationalPrimarySchoolYearlyForOneChild = 19750.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.67f,
+ onePairOfNikeRunningShoesMidRange = 86.86f,
+ onePairOfMenLeatherBusinessShoes = 94.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 3.0f,
+ monthlyPassRegularPrice = 60.0f,
+ taxiStartNormalTariff = 5.0f,
+ taxi1kmNormalTariff = 1.15f,
+ taxi1hourWaitingNormalTariff = 35.0f,
+ gasolineOneLiter = 1.27f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 18597.5f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17300.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1300.0f,
+ apartment3BedroomsInCityCentre = 1800.0f,
+ apartment3BedroomsOutsideOfCentre = 1800.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 6070.85f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 4886.82f
+ ),
+ averageMonthlyNetSalaryAfterTax = 13f,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 12
+ CityEntity(
+ cityName = "Airway Heights",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 77.5f,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.17f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.86f,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.7f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 12.0f,
+ banana1kg = 24f,
+ oranges1kg = 34f,
+ tomato1kg = 23f,
+ potato1kg = 53f,
+ onion1kg = 42f,
+ lettuceOneHead = 53f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.76f,
+ riceWhite1kg = 3.93f,
+ eggsRegular12 = 2.0f,
+ localCheese1kg = 12.61f,
+ chickenFillets1kg = 10.93f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.21f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 225.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.4f,
+ fitnessClubMonthlyFeeForOneAdult = 65.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 300.0f,
+ internationalPrimarySchoolYearlyForOneChild = 19750.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.67f,
+ onePairOfNikeRunningShoesMidRange = 86.86f,
+ onePairOfMenLeatherBusinessShoes = 94.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 3.0f,
+ monthlyPassRegularPrice = 60.0f,
+ taxiStartNormalTariff = 5.0f,
+ taxi1kmNormalTariff = 1.15f,
+ taxi1hourWaitingNormalTariff = 35.0f,
+ gasolineOneLiter = 1.27f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 18597.5f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17300.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1300.0f,
+ apartment3BedroomsInCityCentre = 1800.0f,
+ apartment3BedroomsOutsideOfCentre = 1800.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 6070.85f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 4886.82f
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ ),
+ // endregion
+
+ // region City 13
+ CityEntity(
+ cityName = "Airway Heights",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 77.5f,
+ mealAtMcDonaldSOrEquivalent = 10.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 5.17f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.86f,
+ waterAThirdOfLiterBottleInRestaurants = 2.0f,
+ milkRegularOneLiter = 0.79f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.7f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0f,
+ banana1kg = 0f,
+ oranges1kg = 0f,
+ tomato1kg = 0f,
+ potato1kg = 0f,
+ onion1kg = 0f,
+ lettuceOneHead = 0f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.76f,
+ riceWhite1kg = 3.93f,
+ eggsRegular12 = 2.0f,
+ localCheese1kg = 12.61f,
+ chickenFillets1kg = 10.93f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.21f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 225.31f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 68.4f,
+ fitnessClubMonthlyFeeForOneAdult = 65.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 13.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 300.0f,
+ internationalPrimarySchoolYearlyForOneChild = 19750.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 47.71f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.67f,
+ onePairOfNikeRunningShoesMidRange = 86.86f,
+ onePairOfMenLeatherBusinessShoes = 94.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 3.0f,
+ monthlyPassRegularPrice = 60.0f,
+ taxiStartNormalTariff = 5.0f,
+ taxi1kmNormalTariff = 1.15f,
+ taxi1hourWaitingNormalTariff = 35.0f,
+ gasolineOneLiter = 1.27f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 18597.5f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 17300.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1300.0f,
+ apartment3BedroomsInCityCentre = 1800.0f,
+ apartment3BedroomsOutsideOfCentre = 1800.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 6070.85f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 4886.82f
+ ),
+ averageMonthlyNetSalaryAfterTax = 0f,
+ dataQuality = false
+ )
+ // endregion
+ )
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/InvalidFakeData.kt b/src/test/kotlin/data/InvalidFakeData.kt
new file mode 100644
index 000000000..7d3a1aeca
--- /dev/null
+++ b/src/test/kotlin/data/InvalidFakeData.kt
@@ -0,0 +1,93 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+object InvalidFakeData : CostOfLivingDataSource {
+
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = " ",
+ country = " ",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = null,
+ mealFor2PeopleMidRangeRestaurant = null,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = null,
+ cokePepsiAThirdOfLiterBottleInRestaurants = null,
+ waterAThirdOfLiterBottleInRestaurants = null,
+ milkRegularOneLiter = null,
+ waterOneAndHalfLiterBottleAtTheMarket = null
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = null,
+ banana1kg = null,
+ oranges1kg = null,
+ tomato1kg = null,
+ potato1kg = null,
+ onion1kg = null,
+ lettuceOneHead = null
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = null,
+ riceWhite1kg = null,
+ eggsRegular12 = null,
+ localCheese1kg = null,
+ chickenFillets1kg = null,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = null,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = null,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = null,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = null,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = null,
+ oneSummerDressInAChainStoreZaraHAndM = null,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = null
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = null,
+ taxi1kmNormalTariff = null,
+ taxi1hourWaitingNormalTariff = null,
+ gasolineOneLiter = null
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 21105.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = null,
+ dataQuality = false
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/data/ManagerExpectationsFakeData.kt b/src/test/kotlin/data/ManagerExpectationsFakeData.kt
new file mode 100644
index 000000000..95a0dfd01
--- /dev/null
+++ b/src/test/kotlin/data/ManagerExpectationsFakeData.kt
@@ -0,0 +1,374 @@
+package data
+
+import interactor.CostOfLivingDataSource
+import model.*
+
+
+class ManagerExpectationsFakeData : CostOfLivingDataSource {
+ override fun getAllCitiesData(): List {
+ return listOf(
+ CityEntity(
+ cityName = "Great Falls",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 40.0f,
+ mealAtMcDonaldSOrEquivalent = 9.5f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.5f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.02f,
+ waterAThirdOfLiterBottleInRestaurants = 1.71f,
+ milkRegularOneLiter = 1.02f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.86f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 4.41f,
+ banana1kg = 1.58f,
+ oranges1kg = 3.93f,
+ tomato1kg = 4.41f,
+ potato1kg = 1.65f,
+ onion1kg = 2.08f,
+ lettuceOneHead = 1.25f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 2.95f,
+ riceWhite1kg = 4.12f,
+ eggsRegular12 = 3.25f,
+ localCheese1kg = 9.92f,
+ chickenFillets1kg = 11.01f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 13.23f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 145.61f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.15f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 65.83f,
+ fitnessClubMonthlyFeeForOneAdult = null,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.0f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 2500.0f,
+ internationalPrimarySchoolYearlyForOneChild = 75000.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 51.25f,
+ oneSummerDressInAChainStoreZaraHAndM = 27.5f,
+ onePairOfNikeRunningShoesMidRange = 70.0f,
+ onePairOfMenLeatherBusinessShoes = 120.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 1.5f,
+ monthlyPassRegularPrice = 55.0f,
+ taxiStartNormalTariff = 9.5f,
+ taxi1kmNormalTariff = 1.46f,
+ taxi1hourWaitingNormalTariff = 25.0f,
+ gasolineOneLiter = 1.44f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 31000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 23000.0f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 750.0f,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = 1600.0f,
+ apartment3BedroomsOutsideOfCentre = 2250.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 2583.34f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 7965.29f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1000.0f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Roseburg",
+ country = "United States",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 15.0f,
+ mealFor2PeopleMidRangeRestaurant = 60.0f,
+ mealAtMcDonaldSOrEquivalent = 8.0f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 4.49f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.22f,
+ waterAThirdOfLiterBottleInRestaurants = 1.26f,
+ milkRegularOneLiter = 0.98f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.0f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.3f,
+ banana1kg = 0.99f,
+ oranges1kg = 2.2f,
+ tomato1kg = 1.1f,
+ potato1kg = 1.71f,
+ onion1kg = 1.62f,
+ lettuceOneHead = 1.83f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 3.04f,
+ riceWhite1kg = 2.2f,
+ eggsRegular12 = 1.69f,
+ localCheese1kg = 12.9f,
+ chickenFillets1kg = 16.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 12.49f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 100.0f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.25f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 55.0f,
+ fitnessClubMonthlyFeeForOneAdult = 50.0f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 12.5f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 921.42f,
+ internationalPrimarySchoolYearlyForOneChild = 8950.0f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.67f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.0f,
+ onePairOfNikeRunningShoesMidRange = 63.33f,
+ onePairOfMenLeatherBusinessShoes = 50.0f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 2.0f,
+ monthlyPassRegularPrice = 20.0f,
+ taxiStartNormalTariff = 3.0f,
+ taxi1kmNormalTariff = 1.86f,
+ taxi1hourWaitingNormalTariff = 15.0f,
+ gasolineOneLiter = 1.36f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20000.0f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 22328.2f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 1300.0f,
+ apartmentOneBedroomOutsideOfCentre = 1475.0f,
+ apartment3BedroomsInCityCentre = 2350.0f,
+ apartment3BedroomsOutsideOfCentre = 2625.0f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 1883.68f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 1614.59f
+ ),
+ averageMonthlyNetSalaryAfterTax = 1200.0f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Moose Jaw",
+ country = "Canada",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 14.82f,
+ mealFor2PeopleMidRangeRestaurant = 55.59f,
+ mealAtMcDonaldSOrEquivalent = 8.89f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 3.29f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 2.16f,
+ waterAThirdOfLiterBottleInRestaurants = 1.65f,
+ milkRegularOneLiter = 1.48f,
+ waterOneAndHalfLiterBottleAtTheMarket = 1.98f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 3.15f,
+ banana1kg = 1.06f,
+ oranges1kg = 2.96f,
+ tomato1kg = 2.88f,
+ potato1kg = 1.91f,
+ onion1kg = 1.74f,
+ lettuceOneHead = 2.22f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.91f,
+ riceWhite1kg = 1.63f,
+ eggsRegular12 = 3.19f,
+ localCheese1kg = 10.28f,
+ chickenFillets1kg = 8.17f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 10.93f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 154.9f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.19f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 54.66f,
+ fitnessClubMonthlyFeeForOneAdult = 55.59f,
+ tennisCourtRentOneHourOnWeekend = 48.17f,
+ cinemaInternationalReleaseOneSeat = 7.41f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 567.6f,
+ internationalPrimarySchoolYearlyForOneChild = 7893.24f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 29.65f,
+ oneSummerDressInAChainStoreZaraHAndM = 25.94f,
+ onePairOfNikeRunningShoesMidRange = 79.67f,
+ onePairOfMenLeatherBusinessShoes = 101.91f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.93f,
+ monthlyPassRegularPrice = 29.65f,
+ taxiStartNormalTariff = 2.59f,
+ taxi1kmNormalTariff = 0.56f,
+ taxi1hourWaitingNormalTariff = 22.23f,
+ gasolineOneLiter = 1.35f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 20752.19f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 20011.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = null,
+ apartmentOneBedroomOutsideOfCentre = null,
+ apartment3BedroomsInCityCentre = null,
+ apartment3BedroomsOutsideOfCentre = null,
+ pricePerSquareMeterToBuyApartmentInCityCentre = null,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = null
+ ),
+ averageMonthlyNetSalaryAfterTax = 1185.84f,
+ dataQuality = false
+ ), CityEntity(
+ cityName = "Chetumal",
+ country = "Mexico",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 12.56f,
+ mealFor2PeopleMidRangeRestaurant = 23.21f,
+ mealAtMcDonaldSOrEquivalent = 5.06f
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 2.84f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.71f,
+ waterAThirdOfLiterBottleInRestaurants = 0.61f,
+ milkRegularOneLiter = 0.89f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.72f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 2.84f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.37f,
+ tomato1kg = 1.55f,
+ potato1kg = 1.42f,
+ onion1kg = 1.03f,
+ lettuceOneHead = 0.93f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 1.55f,
+ riceWhite1kg = 1.16f,
+ eggsRegular12 = 1.5f,
+ localCheese1kg = 4.13f,
+ chickenFillets1kg = 4.38f,
+ beefRound1kgOrEquivalentBackLegRedMeat = null
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = 99.25f,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.26f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 27.21f,
+ fitnessClubMonthlyFeeForOneAdult = 18.05f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 3.09f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 61.88f,
+ internationalPrimarySchoolYearlyForOneChild = null
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 41.26f,
+ oneSummerDressInAChainStoreZaraHAndM = 36.1f,
+ onePairOfNikeRunningShoesMidRange = 77.35f,
+ onePairOfMenLeatherBusinessShoes = 51.57f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = 0.57f,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.24f,
+ taxi1kmNormalTariff = 1.29f,
+ taxi1hourWaitingNormalTariff = 3.48f,
+ gasolineOneLiter = 1.11f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = 21246.42f,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16759.92f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 198.49f,
+ apartmentOneBedroomOutsideOfCentre = 126.98f,
+ apartment3BedroomsInCityCentre = 398.77f,
+ apartment3BedroomsOutsideOfCentre = 326.44f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 626.31f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 309.41f
+ ),
+ averageMonthlyNetSalaryAfterTax = 257.84f,
+ dataQuality = false
+ ),
+ CityEntity(
+ cityName = "Kuysinjaq",
+ country = "Iraq",
+ mealsPrices = MealsPrices(
+ mealInexpensiveRestaurant = 2.06f,
+ mealFor2PeopleMidRangeRestaurant = 10.96f,
+ mealAtMcDonaldSOrEquivalent = null
+ ),
+ drinksPrices = DrinksPrices(
+ cappuccinoRegularInRestaurants = 1.37f,
+ cokePepsiAThirdOfLiterBottleInRestaurants = 0.34f,
+ waterAThirdOfLiterBottleInRestaurants = 0.17f,
+ milkRegularOneLiter = 1.03f,
+ waterOneAndHalfLiterBottleAtTheMarket = 0.34f
+ ),
+ fruitAndVegetablesPrices = FruitAndVegetablesPrices(
+ apples1kg = 0.69f,
+ banana1kg = 1.03f,
+ oranges1kg = 1.03f,
+ tomato1kg = 0.51f,
+ potato1kg = 0.51f,
+ onion1kg = 0.51f,
+ lettuceOneHead = 0.34f
+ ),
+ foodPrices = FoodPrices(
+ loafOfFreshWhiteBread500g = 0.69f,
+ riceWhite1kg = 1.03f,
+ eggsRegular12 = 1.37f,
+ localCheese1kg = 6.85f,
+ chickenFillets1kg = 3.43f,
+ beefRound1kgOrEquivalentBackLegRedMeat = 8.22f
+ ),
+ servicesPrices = ServicesPrices(
+ basicElectricityHeatingCoolingWaterGarbageFor85m2Apartment = null,
+ oneMinOfPrepaidMobileTariffLocalNoDiscountsOrPlans = 0.06f,
+ internet60MbpsOrMoreUnlimitedDataCableAdsl = 34.26f,
+ fitnessClubMonthlyFeeForOneAdult = 13.7f,
+ tennisCourtRentOneHourOnWeekend = null,
+ cinemaInternationalReleaseOneSeat = 10.28f,
+ preschoolOrKindergartenFullDayPrivateMonthlyForOneChild = 57.1f,
+ internationalPrimarySchoolYearlyForOneChild = 1027.75f
+ ),
+ clothesPrices = ClothesPrices(
+ onePairOfJeansLevis50oneOrSimilar = 13.7f,
+ oneSummerDressInAChainStoreZaraHAndM = 17.13f,
+ onePairOfNikeRunningShoesMidRange = null,
+ onePairOfMenLeatherBusinessShoes = 17.13f
+ ),
+ transportationsPrices = TransportationsPrices(
+ oneWayTicketLocalTransport = null,
+ monthlyPassRegularPrice = null,
+ taxiStartNormalTariff = 1.37f,
+ taxi1kmNormalTariff = 0.69f,
+ taxi1hourWaitingNormalTariff = 3.43f,
+ gasolineOneLiter = 0.62f
+ ),
+ carsPrices = CarsPrices(
+ volkswagenGolf_1_4_90kwTrendLineOrEquivalentNewCar = null,
+ toyotaCorollaSedan_1_6l_97kwComfortOrEquivalentNewCar = 16444.04f
+ ),
+ realEstatesPrices = RealEstatesPrices(
+ apartmentOneBedroomInCityCentre = 137.03f,
+ apartmentOneBedroomOutsideOfCentre = 102.78f,
+ apartment3BedroomsInCityCentre = 205.55f,
+ apartment3BedroomsOutsideOfCentre = 171.29f,
+ pricePerSquareMeterToBuyApartmentInCityCentre = 342.58f,
+ pricePerSquareMeterToBuyApartmentOutsideOfCentre = 137.03f
+ ),
+ averageMonthlyNetSalaryAfterTax = 411.1f,
+ dataQuality = false
+ )
+ )
+
+ }
+}
+
+
+
+
+
+
+
+
diff --git a/src/test/kotlin/interactor/GetAverageFruitAndVegetablesInteractorTest.kt b/src/test/kotlin/interactor/GetAverageFruitAndVegetablesInteractorTest.kt
new file mode 100644
index 000000000..07c08ea3b
--- /dev/null
+++ b/src/test/kotlin/interactor/GetAverageFruitAndVegetablesInteractorTest.kt
@@ -0,0 +1,127 @@
+package interactor
+
+import data.EmptyFakeData
+import data.FruitsAndVegetablesFakeData
+import data.InvalidFakeData
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+class GetAverageFruitAndVegetablesInteractorTest {
+
+ private lateinit var getAverageFruitAndVegetablesInteractor: GetAverageFruitAndVegetablesInteractor
+ private val fakeData = FruitsAndVegetablesFakeData()
+
+ @BeforeEach
+ fun setup() {
+ getAverageFruitAndVegetablesInteractor = GetAverageFruitAndVegetablesInteractor(fakeData)
+ }
+
+ @Test
+ fun `should return correct cities names when the data source is valid`() {
+ // given a limit of cities
+ val limit = 10
+
+ // when check and return cities name
+ val result = getAverageFruitAndVegetablesInteractor(limit)
+
+ // then asserted the return and the expected
+ val expected = listOf(
+ "Christiansburg",
+ "Brookdale",
+ "Woodlawn",
+ "Brevard",
+ "Clayton",
+ "Kernersville",
+ "Keller",
+ "Malden",
+ "Pearl",
+ "Moncks Corner"
+ )
+ assertEquals(expected, result)
+ }
+
+ @Test
+ fun `should return empty list when given the data source is Invalid`() {
+ // given a limit of cities and invalid data source
+ val limit = 10
+
+ getAverageFruitAndVegetablesInteractor = GetAverageFruitAndVegetablesInteractor(InvalidFakeData)
+
+ // when check and return empty list
+ val result = getAverageFruitAndVegetablesInteractor(limit)
+
+ val expected = emptyList()
+ // then asserted the return and the expected
+ assertEquals(expected, result)
+ }
+
+ @Test
+ fun `should return empty list when given the data source is empty`() {
+ // given a limit of cities and invalid data source
+ val limit = 10
+
+ getAverageFruitAndVegetablesInteractor = GetAverageFruitAndVegetablesInteractor(EmptyFakeData)
+
+ // when check and return empty list
+ val result = getAverageFruitAndVegetablesInteractor(limit)
+
+ val expected = emptyList()
+ // then asserted the return and the expected
+ assertEquals(expected, result)
+ }
+
+ @Test
+ fun `should return an empty list when given a limit zero`() {
+ // given a limit zero
+ val limit = 0
+
+ // when check and return empty list
+ val result = getAverageFruitAndVegetablesInteractor(limit)
+
+ val expected = emptyList()
+
+ // then asserted the return and the expected
+ assertEquals(expected, result)
+ }
+
+ @Test
+ fun `should throw an exception when given a negative limit number`() {
+ // given a limit negative number
+ val limit = -1
+
+ // when check and throw exception
+ val result = Executable { getAverageFruitAndVegetablesInteractor(limit) }
+
+ // then asserted the return and the expected
+ assertThrows(IllegalArgumentException::class.java, result)
+ }
+
+ @Test
+ fun `should Return false when the fruits and vegetables is Null but salary is valid`() {
+ // given a null for fruits and vegetables but valid for salaries
+ val city = FruitsAndVegetablesFakeData().getAllCitiesData()[10]
+
+ // when check
+ val result = getAverageFruitAndVegetablesInteractor.excludeNullFruitVegPriceAndNullSalaries(city)
+
+ // then asserted the return and the expected
+ assertFalse(result)
+ }
+
+ @Test
+ fun `should Return false when the fruits and vegetables is valid but salary is null`() {
+ // given valid data for fruits and vegetables but null for salaries
+ val city = FruitsAndVegetablesFakeData().getAllCitiesData()[11]
+
+ // when check
+ val result = getAverageFruitAndVegetablesInteractor.excludeNullFruitVegPriceAndNullSalaries(city)
+
+ // then asserted the return and the expected
+ assertFalse(result)
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractorTest.kt b/src/test/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractorTest.kt
new file mode 100644
index 000000000..64ac79869
--- /dev/null
+++ b/src/test/kotlin/interactor/GetBestCitiesForBuyingSoftDrinksInteractorTest.kt
@@ -0,0 +1,109 @@
+package interactor
+
+import data.BestCityForSavingMoneyFakeData
+import data.InvalidFakeData
+import model.CityEntity
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetBestCitiesForBuyingSoftDrinksInteractorTest {
+
+ // region init
+ private lateinit var bestCitiesForBuyingSoftDrinks: GetBestCitiesForBuyingSoftDrinksInteractor
+
+ @BeforeAll
+ fun setup() {
+
+ bestCitiesForBuyingSoftDrinks =
+ GetBestCitiesForBuyingSoftDrinksInteractor(BestCityForSavingMoneyFakeData)
+ }
+ // endregion
+
+ @Test
+ fun `should return true when the city has not null require values`() {
+
+ // given
+ val data = BestCityForSavingMoneyFakeData.getAllCitiesData()[0]
+ val excludeNullRequireValues =
+ bestCitiesForBuyingSoftDrinks::class.java.getDeclaredMethod(
+ "excludeNullRequireValues",
+ CityEntity::class.java
+ )
+ excludeNullRequireValues.isAccessible = true
+
+ // when check if the output is true
+ val result = excludeNullRequireValues.invoke(bestCitiesForBuyingSoftDrinks, data) as Boolean
+
+ // then check the result
+ assertTrue(result)
+ }
+
+ @Test
+ fun `should return best three cities names when we pass the fake data`() {
+
+ // Given a cities names and the names of returned cities
+ val bestThreeCitiesNames = BestCityForSavingMoneyFakeData.getAllCitiesData()
+ .filter { it.cityName != "Malden" }
+
+ // when check if the two lists are the same
+ val namesOfReturnedCities = bestCitiesForBuyingSoftDrinks(3)
+
+ // then check the result
+ assertEquals(bestThreeCitiesNames,namesOfReturnedCities)
+ }
+
+ @Test
+ fun `should throw exception when the data is empty`() {
+
+ // change data source to empty data
+ bestCitiesForBuyingSoftDrinks =
+ GetBestCitiesForBuyingSoftDrinksInteractor(BestCityForSavingMoneyFakeData.emptyData)
+
+ // when the function throw exception
+
+ val result = Executable {
+ bestCitiesForBuyingSoftDrinks(3)
+ }
+
+ // then check the result
+ assertThrows(Exception::class.java, result)
+ }
+
+ @Test
+ fun `should throw exception when the limit is below 1`() {
+
+ // change data source to empty data
+ bestCitiesForBuyingSoftDrinks =
+ GetBestCitiesForBuyingSoftDrinksInteractor(BestCityForSavingMoneyFakeData)
+
+ // when the function throw exception
+
+ val result = Executable {
+ bestCitiesForBuyingSoftDrinks(0)
+ }
+
+ // then check the result
+ assertThrows(Exception::class.java, result)
+ }
+
+ @Test
+ fun `should throw exception when the data is invalid`() {
+
+ // change data source to empty data
+ bestCitiesForBuyingSoftDrinks =
+ GetBestCitiesForBuyingSoftDrinksInteractor(InvalidFakeData)
+
+ // when the function throw exception
+
+ val result = Executable {
+ bestCitiesForBuyingSoftDrinks(3)
+ }
+
+ // then check the result
+ assertThrows(Exception::class.java, result)
+ }
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetBestCitiesToFashionShoppingInteractorTest.kt b/src/test/kotlin/interactor/GetBestCitiesToFashionShoppingInteractorTest.kt
new file mode 100644
index 000000000..033e27052
--- /dev/null
+++ b/src/test/kotlin/interactor/GetBestCitiesToFashionShoppingInteractorTest.kt
@@ -0,0 +1,65 @@
+package interactor
+
+import data.FakeDataSource
+import data.TestCase
+import org.junit.jupiter.api.Test
+
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.TestInstance
+import kotlin.test.assertEquals
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+class GetBestCitiesToFashionShoppingInteractorTest {
+
+ private lateinit var getBestCitiesToFashionShopping: GetBestCitiesToFashionShoppingInteractor
+ private lateinit var fakeData: FakeDataSource
+
+ @BeforeAll
+ fun setUp() {
+ fakeData = FakeDataSource()
+ getBestCitiesToFashionShopping = GetBestCitiesToFashionShoppingInteractor(fakeData)
+
+ }
+
+ @Test
+ fun should_returnCity_when_ValidData() {
+ // Given
+ fakeData.changeDataSource(TestCase.FashionShopping)
+
+ // When
+ val countries = listOf("Sancti Spiritus", "Santiago de Cuba", "Santa Clara")
+ val result = getBestCitiesToFashionShopping.execute()
+
+ // Then check the final result
+ assertEquals(countries, result)
+ }
+
+ @Test
+ fun should_returnEmptyList_When_clothesPricesAreNull() {
+ // Given data clothes prices null
+ fakeData.changeDataSource(TestCase.InvalidData)
+
+ // When return emptyList
+ val expected = emptyList()
+ val result = getBestCitiesToFashionShopping.execute()
+
+ // Then check the final result
+ assertEquals(expected, result)
+ }
+
+
+ @Test
+ fun should_returnEmptyList_When_DataListEmpty() {
+ // Given data empty
+ fakeData.changeDataSource(TestCase.Empty)
+
+ // When return emptyList
+ val expected = emptyList()
+ val result = getBestCitiesToFashionShopping.execute()
+
+ // Then check the final result
+ assertEquals(expected, result)
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetBestCityForSavingMoneyInteractorTest.kt b/src/test/kotlin/interactor/GetBestCityForSavingMoneyInteractorTest.kt
new file mode 100644
index 000000000..47b65c26b
--- /dev/null
+++ b/src/test/kotlin/interactor/GetBestCityForSavingMoneyInteractorTest.kt
@@ -0,0 +1,70 @@
+package interactor
+
+import data.FakeDataSource
+import data.TestCase
+import model.CityEntity
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.TestInstance
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetBestCityForSavingMoneyInteractorTest {
+
+ // region init
+ private lateinit var bestCityForSavingMoney: GetBestCityForSavingMoneyInteractor
+ private lateinit var fakeData: FakeDataSource
+
+ @BeforeAll
+ fun setup() {
+ fakeData = FakeDataSource()
+ bestCityForSavingMoney =
+ GetBestCityForSavingMoneyInteractor(fakeData)
+ fakeData.changeDataSource(TestCase.BestCityForSavingMoney)
+
+ }
+ // endregion
+
+ @Test
+ fun should_ReturnTrue_When_TheCityHasNotNullRequireValues() {
+
+ // given
+ val data = fakeData.getAllCitiesData()[0]
+ val excludeNullRequireValues =
+ bestCityForSavingMoney::class.java.getDeclaredMethod("excludeNullRequireValues", CityEntity::class.java)
+ excludeNullRequireValues.isAccessible = true
+
+ // when check if the output is true
+ val result = excludeNullRequireValues.invoke(bestCityForSavingMoney, data) as Boolean
+
+ // then check the result
+ Assertions.assertTrue(result)
+ }
+
+ @Test
+ fun should_ReturnCity_When_ValidData() {
+
+ // Given a city name and the name of returned city
+ val cityName = "Moncks Corner"
+
+ // when
+ val nameOfReturnedCity = bestCityForSavingMoney().cityName
+
+ // then check the result
+ Assertions.assertEquals(cityName, nameOfReturnedCity)
+ }
+
+ @Test
+ fun should_ReturnFalse_When_WePassTheFakeData() {
+
+ // Given a city name and the name of returned city
+ val cityName = "Cairo"
+ val nameOfReturnedCity = bestCityForSavingMoney().cityName
+
+ // when check if the two names are the same
+ val areEqual = cityName == nameOfReturnedCity
+
+ // then check the result
+ Assertions.assertFalse(areEqual)
+ }
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetCitiesAverageSalaryTest.kt b/src/test/kotlin/interactor/GetCitiesAverageSalaryTest.kt
new file mode 100644
index 000000000..479f05e2d
--- /dev/null
+++ b/src/test/kotlin/interactor/GetCitiesAverageSalaryTest.kt
@@ -0,0 +1,90 @@
+package interactor
+
+import data.FakeDataSource
+import data.TestCase
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetCitiesAverageSalaryTest {
+
+ private lateinit var getCitiesAverageSalary: GetCitiesAverageSalary
+ private lateinit var fakeData: FakeDataSource
+
+ @BeforeAll
+ fun setUp() {
+ fakeData = FakeDataSource()
+ getCitiesAverageSalary = GetCitiesAverageSalary(fakeData)
+ fakeData.changeDataSource(TestCase.CitiesAverageSalary)
+
+ }
+
+ @Test
+ fun should_ReturnCitiesWithAverageSalary_When_InputLowerCaseCountry() {
+ //given a lower case country
+ val country = "cuba"
+
+ //when calculate the average salary of city
+ val result = getCitiesAverageSalary.execute(country)
+
+ //then check the result
+ val fakeList = listOf(Pair("Santa Clara", 25.0))
+ assertEquals(fakeList, result)
+ }
+
+ @Test
+ fun should_ReturnCitiesWithAverageSalary_When_InputUpperCaseCountry() {
+ //given an upper case country
+ val country = "CUBA"
+
+ //when calculate the average salary of city
+ val result = getCitiesAverageSalary.execute(country)
+
+ //then check the result
+ val fakeList = listOf(Pair("Santa Clara", 25.0))
+ assertEquals(fakeList, result)
+ }
+
+ @Test
+ fun should_ReturnCitiesWithAverageSalary_When_InputUpperCaseAndLowerCaseCountry() {
+ //given an upperCase and lowercase country
+ val country = "Cuba"
+
+ //when calculate the average salary of city
+ val result = getCitiesAverageSalary.execute(country)
+
+ //then check the result
+ val fakeList = listOf(Pair("Santa Clara", 25.0))
+ assertEquals(fakeList, result)
+ }
+
+ @Test
+ fun should_ReturnCorrectCities_when_TheDataQualityIsTrue() {
+ //given a country with true data quality
+ val country = "cuba"
+
+ //when return the average cities salary
+ val result = getCitiesAverageSalary.execute(country)
+
+ //then check the result
+ val fakeList = listOf(Pair("Santa Clara", 25.0))
+ assertEquals(fakeList, result)
+
+ }
+
+ @Test
+ fun should_ReturnThrowException_When_InputWrong() {
+ //given a wrong name country
+ val country = "&&7#"
+
+ //when calculate the average salary of city
+ val result = Executable { getCitiesAverageSalary.execute(country) }
+
+ //then check the result
+ assertThrows(IllegalArgumentException::class.java, result)
+ }
+}
+
diff --git a/src/test/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractorTest.kt b/src/test/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractorTest.kt
new file mode 100644
index 000000000..1b329de61
--- /dev/null
+++ b/src/test/kotlin/interactor/GetCitiesNamesWithCheapestBananaPricesInteractorTest.kt
@@ -0,0 +1,167 @@
+package interactor
+
+import data.BananaCheapestFakeData
+import data.BananaCheapestFakeData.citiesListOf
+import data.BananaCheapestFakeData.makeCity
+import data.EmptyFakeData
+import data.InvalidFakeData
+import model.*
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Assertions.assertThrows
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetCitiesNamesWithCheapestBananaPricesInteractorTest {
+ // region init
+ private lateinit var getCitiesNamesWithCheapestBananaPrices: GetCitiesNamesWithCheapestBananaPricesInteractor
+
+ @BeforeEach
+ fun setup() {
+ getCitiesNamesWithCheapestBananaPrices = GetCitiesNamesWithCheapestBananaPricesInteractor(BananaCheapestFakeData)
+ }
+ // endregion
+
+ // region one city cases
+ @Test
+ fun `should throw illegal state exception when the data is invalid`() {
+ // change source of fake data to invalid data
+ getCitiesNamesWithCheapestBananaPrices = GetCitiesNamesWithCheapestBananaPricesInteractor(InvalidFakeData)
+
+ // given one city included
+ val city = makeCity("Santiago de Cuba")
+
+ // when the output is list of one city
+ val result = Executable { getCitiesNamesWithCheapestBananaPrices(city) }
+
+ // then check
+ assertThrows(IllegalStateException::class.java, result)
+ }
+ @Test
+ fun `should throw illegal state exception when the data is empty`() {
+ // change source of fake data to empty data
+ getCitiesNamesWithCheapestBananaPrices = GetCitiesNamesWithCheapestBananaPricesInteractor(EmptyFakeData)
+
+ // given one city included
+ val city = makeCity("Santiago de Cuba")
+
+ // when the output is list of one city
+ val result = Executable { getCitiesNamesWithCheapestBananaPrices(city) }
+
+ // then check
+ assertThrows(IllegalStateException::class.java, result)
+ }
+
+ @Test
+ fun `should return one city when the input is one city included`() {
+ // given one city included
+ val city = makeCity("Santiago de Cuba")
+
+ // when the output is list of one city
+ val result = getCitiesNamesWithCheapestBananaPrices(city)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba"), result)
+ }
+
+ @Test
+ fun `should throw illegal state exception when the input is one city not included`() {
+ // given one city is not included
+ val city = makeCity("Galaxy")
+
+ // when the output is empty list of city
+ val result = Executable { getCitiesNamesWithCheapestBananaPrices(city) }
+
+ // then check
+ assertThrows(IllegalStateException::class.java, result)
+ }
+
+ @Test
+ fun `should return one city when the input is one city included in lowercase`() {
+ // given one city included
+ val city = makeCity("santiago de cuba")
+
+ // when the output is list of one city
+ val result = getCitiesNamesWithCheapestBananaPrices(city)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba"), result)
+ }
+
+ @Test
+ fun `should return one city when the input is one city included in lowercase and more outer spaces`() {
+ // given one city included
+ val city = makeCity(" santiago de cuba ")
+
+ // when the output is list of one city
+ val result = getCitiesNamesWithCheapestBananaPrices(city)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba"), result)
+ }
+ // endregion
+
+ // region multi city cases
+ @Test
+ fun `should return sorted list when the input is multi city all included`() {
+ // given multi city all of this is included
+ val cities = citiesListOf("Santiago de Cuba", "Sancti Spiritus")
+
+ // when the output is list of sorted cities by Banana Price
+ val result = getCitiesNamesWithCheapestBananaPrices(*cities)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba", "Sancti Spiritus"), result)
+ }
+
+ @Test
+ fun `should return sorted list when the input is multi city all included in different cases`() {
+ // given multi city all of this is included
+ val cities = citiesListOf("SaNtiago de cuba", "sAncti spirItus")
+
+ // when the output is list of sorted cities by Banana Price
+ val result = getCitiesNamesWithCheapestBananaPrices(*cities)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba", "Sancti Spiritus"), result)
+ }
+
+ @Test
+ fun `should return sorted list when the input is multi city some included`() {
+ // given multi city some of this is included
+ val cities = citiesListOf("Santiago de Cuba", "Sancti Spiritus", "Galaxy")
+
+ // when the output is list of sorted cities by Banana Price
+ val result = getCitiesNamesWithCheapestBananaPrices(*cities)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba", "Sancti Spiritus"), result)
+ }
+
+ @Test
+ fun `should return sorted list when the input is multi city some included in different cases`() {
+ // given multi city some of this is included
+ val cities = citiesListOf("santiago de cuba", "Sancti Spiritus", "Galaxy")
+
+ // when the output is list of sorted cities by Banana Price
+ val result = getCitiesNamesWithCheapestBananaPrices(*cities)
+
+ // then check
+ assertEquals(listOf("Santiago de Cuba", "Sancti Spiritus"), result)
+ }
+
+ @Test
+ fun `should throw illegal state exception when the input is multi city all not included`() {
+ // given multi city all of this is not included
+ val cities = citiesListOf("", "Farwala", "Galaxy")
+
+ // when the output is empty list
+ val result = Executable { getCitiesNamesWithCheapestBananaPrices(*cities) }
+
+ // then check
+ assertThrows(IllegalStateException::class.java, result)
+ }
+ // endregion
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractorTest.kt b/src/test/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractorTest.kt
new file mode 100644
index 000000000..883af75e8
--- /dev/null
+++ b/src/test/kotlin/interactor/GetCityHasCheapestInternetConnectionInteractorTest.kt
@@ -0,0 +1,49 @@
+package interactor
+
+import data.CheapestInternetFakeData
+import org.junit.jupiter.api.*
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.function.Executable
+
+
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetCityHasCheapestInternetConnectionInteractorTest {
+
+ private lateinit var cityHasCheapestInternet: GetCityHasCheapestInternetConnectionInteractor
+
+ @Test
+ fun `should return cheapest city when given list of cities`() {
+ // change source of fake data to valid salary and internet prices
+ cityHasCheapestInternet = GetCityHasCheapestInternetConnectionInteractor(CheapestInternetFakeData
+ .validSalaryAndInternetPrices)
+ val expectedCity = CheapestInternetFakeData.validSalaryAndInternetPrices.getAllCitiesData()[9]
+ // when check for the cheapest city in the list
+ val actual = cityHasCheapestInternet()
+ // then check the result
+ assertEquals(expectedCity, actual)
+ }
+
+ @Test
+ fun `should return exception when all city has null internet price`() {
+ // change source of fake data to invalid data
+ cityHasCheapestInternet = GetCityHasCheapestInternetConnectionInteractor(CheapestInternetFakeData
+ .invalidData)
+ // when check for the cheapest city in the list
+ val actual = Executable { cityHasCheapestInternet() }
+ // then check the result
+ assertThrows(IllegalStateException::class.java, actual)
+ }
+
+ @Test
+ fun `should return exception when given is empty fake data`() {
+ // change source of fake data to empty data
+ cityHasCheapestInternet = GetCityHasCheapestInternetConnectionInteractor(CheapestInternetFakeData
+ .emptyData)
+ // when check for the cheapest city in the list
+ val actual = Executable { cityHasCheapestInternet() }
+ // then check the result
+ assertThrows(IllegalStateException::class.java, actual)
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractorTest.kt b/src/test/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractorTest.kt
new file mode 100644
index 000000000..4eddc0b87
--- /dev/null
+++ b/src/test/kotlin/interactor/GetCityThatMatchTheManagerExpectationsInteractorTest.kt
@@ -0,0 +1,87 @@
+package interactor
+
+import data.FakeDataSource
+import data.TestCase
+import org.junit.jupiter.api.Test
+
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.TestInstance
+import kotlin.test.assertEquals
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+class GetCityThatMatchTheManagerExpectationsInteractorTest {
+
+ private lateinit var getCityThatMatchTheManagerExpectationsInteractor: GetCityThatMatchTheManagerExpectationsInteractor
+ private lateinit var fakeData: FakeDataSource
+
+ @BeforeAll
+ fun setUp() {
+ fakeData = FakeDataSource()
+ getCityThatMatchTheManagerExpectationsInteractor =
+ GetCityThatMatchTheManagerExpectationsInteractor(fakeData)
+ fakeData.changeDataSource(TestCase.ManagerExpectations)
+
+ }
+
+ @Test
+ fun should_returnCity_when_allCountriesIncluded() {
+ // Given all countries included
+ val countries = listOf("united states", "canada", "mexico")
+ // When return the city that match manager expectations
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertEquals("Chetumal", result?.cityName)
+ }
+
+ @Test
+ fun should_returnCity_when_namesOfCountriesIsUpperCase() {
+ // Given all countries included and all names uppercase
+ val countries = listOf("UNITED STATES", "CANADA", "MEXICO")
+ // When return the city that match manager expectations
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertEquals("Chetumal", result?.cityName)
+ }
+
+ @Test
+ fun should_returnCity_when_namesOfCountriesIsMixedUpperCaseAndLowCase() {
+ // Given all countries included and all names mixed
+ val countries = listOf("UnItEd STaTeS", "CaNAdA", "MeXiCo")
+ // When return the city that match manager expectations
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertEquals("Chetumal", result?.cityName)
+ }
+
+ @Test
+ fun should_returnCity_when_notAllCountriesIncluded() {
+ // Given not all countries included
+ val countries = listOf("united states", "canada", "iraq")
+ // When return the city that match manager expectations
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertEquals("Great Falls", result?.cityName)
+ }
+
+ @Test
+ fun should_returnCity_when_allCountriesNotIncluded() {
+ // Given all countries not included
+ val countries = listOf("egypt", "syria", "iraq")
+ // When return empty result
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertNull(null, result?.cityName)
+ }
+
+ @Test
+ fun should_returnCity_when_namesOfCountriesIsEmpty() {
+ // Given all empty string instead of countries names
+ val countries = listOf("", "", "")
+ // When return empty result
+ val result = getCityThatMatchTheManagerExpectationsInteractor.execute(countries)
+ // Then check the final result
+ assertNull(null, result?.cityName)
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetCostlierCityInteractorTest.kt b/src/test/kotlin/interactor/GetCostlierCityInteractorTest.kt
new file mode 100644
index 000000000..0f3d1f2af
--- /dev/null
+++ b/src/test/kotlin/interactor/GetCostlierCityInteractorTest.kt
@@ -0,0 +1,61 @@
+package interactor
+
+import data.CostlierCityFakeData
+import data.EmptyFakeData
+import data.InvalidFakeData
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetCostlierCityInteractorTest {
+ lateinit var getCostlierCityInteractor:
+ GetCostlierCityInteractor
+
+ lateinit var fakeDataSource: CostlierCityFakeData
+ lateinit var emptyFakeData: EmptyFakeData
+ lateinit var invalidFakeData: InvalidFakeData
+
+
+ @BeforeAll
+ fun setup() {
+ fakeDataSource = CostlierCityFakeData()
+ emptyFakeData = EmptyFakeData()
+ invalidFakeData= InvalidFakeData()
+ }
+
+ @Test
+ fun `should return correct city when the data is valid`() {
+ getCostlierCityInteractor = GetCostlierCityInteractor(fakeDataSource)
+ //when The result is one city
+ val city = getCostlierCityInteractor.execute()
+ //then check
+ assertEquals( "Seoul", city.cityName)
+ }
+
+ @Test
+ fun `should return empty when the data is empty`() {
+ getCostlierCityInteractor =
+ GetCostlierCityInteractor(emptyFakeData)
+ //when The result is one city
+ val result = Executable { getCostlierCityInteractor.execute() }
+ //then check
+ assertThrows(Exception::class.java , result )
+
+ }
+
+ @Test
+ fun `should throw exception when the data is inValid`() {
+ getCostlierCityInteractor =
+ GetCostlierCityInteractor(invalidFakeData)
+ //when The result is one city
+ val result = Executable { getCostlierCityInteractor.execute() }
+ //then check
+ assertThrows(Exception::class.java , result )
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndCountOfYearToBuyTest.kt b/src/test/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndCountOfYearToBuyTest.kt
new file mode 100644
index 000000000..e38649107
--- /dev/null
+++ b/src/test/kotlin/interactor/GetTopCitiesHasCheapestPriceOfApartmentsAndCountOfYearToBuyTest.kt
@@ -0,0 +1,87 @@
+package interactor
+
+import data.*
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.TestInstance
+import java.lang.Exception
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetTopCitiesHasCheapestPriceOfApartmentsAndCountOfYearToBuyTest {
+
+ // region init
+ private lateinit var getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor:
+ GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor
+ @BeforeEach
+ fun setup() {
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor =
+ GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(CheapestApartmentsInCitiesFakeData)
+ }
+ // endregion
+
+
+ @Test
+ fun `should return list when the input salary`() {
+
+ // when the output list of a pair of cities names and count of years
+ val result =
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(10)
+
+ // expect list
+ val expectData=listOf(
+ Pair("Domyat", 20.0f),
+ Pair("Popeye Village", 66.66667f),
+ Pair("Hallstatt", 166.66667f),
+ Pair("Simiane La Rotonde", 266.66666f),
+ Pair("Cinque Terre", 300.0f),
+ Pair("Ortahisar", 333.33334f),
+ Pair("Oia", 400.0f),
+ Pair("Shirakawa-go", 500.0f),
+ Pair("Ait Ben-Haddou", 566.6667f),
+ Pair("Cua Van", 666.6667f),
+ )
+
+ // then check
+ assertEquals(expectData ,result)
+ }
+
+
+ @Test
+ fun `should throw exception when limit less than or equal zero`() {
+ // when the output list of a pair of cities names and count of years
+ val result = org.junit.jupiter.api.function.Executable {
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(0)
+ }
+ // then check
+ assertThrows(Exception::class.java, result)
+ }
+
+ @Test
+ fun `should throw exception when data is invalid`() {
+
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor =
+ GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(InvalidFakeData)
+ // when the output list of a pair of cities names and count of years
+ val result = org.junit.jupiter.api.function.Executable {
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(10)
+ }
+ // then check
+ assertThrows(Exception::class.java, result)
+ }
+
+ @Test
+ fun should_throwException_when_dataIsEmpty() {
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor =
+ GetTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(EmptyFakeData)
+ // when the output list of a pair of cities names and count of years
+ val result = org.junit.jupiter.api.function.Executable {
+ getTopCitiesHasCheapestPriceOfApartmentsAndYearInteractor(0)
+ }
+ // then check
+ assertThrows(Exception::class.java, result)
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/GetTopTenCountriesTaxesInteractorTest.kt b/src/test/kotlin/interactor/GetTopTenCountriesTaxesInteractorTest.kt
new file mode 100644
index 000000000..0caf292e7
--- /dev/null
+++ b/src/test/kotlin/interactor/GetTopTenCountriesTaxesInteractorTest.kt
@@ -0,0 +1,38 @@
+package interactor
+
+import data.FakeDataSource
+import data.TestCase
+import org.junit.jupiter.api.BeforeAll
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.TestInstance
+import kotlin.test.assertEquals
+
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+class GetTopTenCountriesTaxesInteractorTest {
+
+ private lateinit var getTopTenCountriesTaxesInteractor : GetTopTenCountriesTaxesInteractor
+ private lateinit var fakeData : FakeDataSource
+
+ @BeforeAll
+ fun setUp() {
+ fakeData = FakeDataSource()
+ getTopTenCountriesTaxesInteractor =
+ GetTopTenCountriesTaxesInteractor(fakeData)
+ fakeData.changeDataSource(TestCase.CountriesTaxes)
+
+ }
+
+
+ @Test
+ fun should_ReturnCorrectList_When_TheDataIsValid() {
+ // when the result is correct list
+ val result = getTopTenCountriesTaxesInteractor.execute()
+ // then check
+ val expected : List> =
+ listOf(("Canada" to 2.16f), ("United States" to 2.12f), ("Mexico" to 0.71f), ("Iraq" to 0.34f))
+ assertEquals(expected, result)
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/interactor/plus/GetCitiesNameWithCheapestTennisPriceOnWeekendInteractorTest.kt b/src/test/kotlin/interactor/plus/GetCitiesNameWithCheapestTennisPriceOnWeekendInteractorTest.kt
new file mode 100644
index 000000000..f41eed214
--- /dev/null
+++ b/src/test/kotlin/interactor/plus/GetCitiesNameWithCheapestTennisPriceOnWeekendInteractorTest.kt
@@ -0,0 +1,67 @@
+package interactor.plus
+
+import data.BananaCheapestFakeData
+import data.EmptyFakeData
+import data.InvalidFakeData
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.TestInstance
+import org.junit.jupiter.api.function.Executable
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+internal class GetCitiesNameWithCheapestTennisPriceOnWeekendInteractorTest {
+ private lateinit var getCitiesNameWithCheapestTennisPrice: GetCitiesNameWithCheapestTennisPriceOnWeekendInteractor
+
+ @BeforeEach
+ fun setup() {
+ getCitiesNameWithCheapestTennisPrice =
+ GetCitiesNameWithCheapestTennisPriceOnWeekendInteractor(BananaCheapestFakeData)
+ }
+
+ @Test
+ fun `should return correct 2 cities when the data is valid`() {
+ // given limit the return by 2
+ val limit = 2
+ val expectedCitiesNames = listOf("Santiago de Cuba", "Sancti Spiritus")
+ // when the actual result is 2 cities names
+ val result = getCitiesNameWithCheapestTennisPrice(limit)
+ // then check of the result
+ assertEquals(expectedCitiesNames, result)
+ }
+
+ @Test
+ fun `should return correct list of 1 city name when the data is valid`() {
+ // given limit the return by 1
+ val limit = 1
+ val expectedCityName = listOf("Santiago de Cuba")
+ // when the actual result is list of 1 city name
+ val result = getCitiesNameWithCheapestTennisPrice(limit)
+ // then check of the result
+ assertEquals(expectedCityName, result)
+ }
+
+ @Test
+ fun `should throw exception when the data is invalid`() {
+ // change data to be invalid
+ getCitiesNameWithCheapestTennisPrice = GetCitiesNameWithCheapestTennisPriceOnWeekendInteractor(InvalidFakeData)
+ // given limit the return by 1
+ val limit = 1
+ // when the actual result is exception
+ val result = Executable { getCitiesNameWithCheapestTennisPrice(limit) }
+ // then check of the result
+ assertThrows(IllegalStateException::class.java, result)
+ }
+
+ @Test
+ fun `should throw exception when the data is empty`() {
+ // change data to be empty
+ getCitiesNameWithCheapestTennisPrice = GetCitiesNameWithCheapestTennisPriceOnWeekendInteractor(EmptyFakeData)
+ // given limit the return by 1
+ val limit = 1
+ // when the actual result is exception
+ val result = Executable { getCitiesNameWithCheapestTennisPrice(limit) }
+ // then check of the result
+ assertThrows(IllegalStateException::class.java, result)
+ }
+}
\ No newline at end of file