Skip to content

Commit 5961623

Browse files
committed
Cover batched string generation
1 parent 3192243 commit 5961623

1 file changed

Lines changed: 50 additions & 39 deletions

File tree

resources-generator/src/test/kotlin/dev/icerock/gradle/generator/StringBatchingTest.kt

Lines changed: 50 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -33,31 +33,28 @@ class StringBatchingTest {
3333
result.typeSpec.propertySpecs.any { it.name == "__platformDetails" },
3434
containerSource
3535
)
36+
assertTrue(
37+
containerSource.contains("public override val __platformDetails"),
38+
containerSource
39+
)
3640
assertTrue(
3741
result.typeSpec.funSpecs.any { it.name == "values" },
3842
containerSource
3943
)
4044

4145
assertEquals(expected = 1, actual = result.fileSpecs.size)
42-
assertEquals(expected = "Strings0.commonMain", actual = result.fileSpecs.single().name)
46+
assertEquals(expected = "CommonMainStrings0.commonMain", actual = result.fileSpecs.single().name)
4347

4448
val accessorSource = result.fileSpecs.single().toString()
4549
assertTrue(
46-
accessorSource.contains("internal expect object CommonMainStrings0"),
47-
accessorSource
48-
)
49-
assertTrue(
50-
accessorSource.contains("public val MR.strings.key_000: StringResource"),
51-
accessorSource
52-
)
53-
assertTrue(
54-
accessorSource.contains("get() = CommonMainStrings0.key_000"),
50+
accessorSource.contains("public expect val MR.strings.key_000: StringResource"),
5551
accessorSource
5652
)
53+
assertFalse(accessorSource.contains("CommonMainStrings0"), accessorSource)
5754
}
5855

5956
@Test
60-
fun commonStringsAreSplitIntoHundredItemBatches() {
57+
fun commonStringsAreSplitIntoFiftyItemBatches() {
6158
val oneHundredResult = createCommonGenerator().generateExpectObject(
6259
parentObjectName = MR_CLASS_NAME,
6360
resources = createStrings(count = 100),
@@ -74,14 +71,18 @@ class StringBatchingTest {
7471
sourceSetName = COMMON_SOURCE_SET
7572
)!!
7673

77-
assertEquals(expected = 1, actual = oneHundredResult.fileSpecs.size)
74+
assertEquals(expected = 2, actual = oneHundredResult.fileSpecs.size)
7875
assertEquals(
79-
expected = listOf("Strings0.commonMain", "Strings1.commonMain"),
76+
expected = listOf(
77+
"CommonMainStrings0.commonMain",
78+
"CommonMainStrings1.commonMain",
79+
"CommonMainStrings2.commonMain"
80+
),
8081
actual = oneHundredOneResult.fileSpecs.map { it.name }
8182
)
82-
assertEquals(expected = 10, actual = largeResult.fileSpecs.size)
83-
assertEquals(expected = "Strings0.commonMain", actual = largeResult.fileSpecs.first().name)
84-
assertEquals(expected = "Strings9.commonMain", actual = largeResult.fileSpecs.last().name)
83+
assertEquals(expected = 20, actual = largeResult.fileSpecs.size)
84+
assertEquals(expected = "CommonMainStrings0.commonMain", actual = largeResult.fileSpecs.first().name)
85+
assertEquals(expected = "CommonMainStrings19.commonMain", actual = largeResult.fileSpecs.last().name)
8586
}
8687

8788
@Test
@@ -101,33 +102,34 @@ class StringBatchingTest {
101102
assertFalse(containerSource.contains("val key_000: StringResource"), containerSource)
102103
assertTrue(containerSource.contains("CommonMainStrings0.values()"), containerSource)
103104
assertTrue(containerSource.contains("CommonMainStrings1.values()"), containerSource)
105+
assertTrue(containerSource.contains("CommonMainStrings2.values()"), containerSource)
104106

105107
val firstBatchSource = androidResult.fileSpecs
106108
.single { it.name == "CommonMainStrings0.androidMain" }
107109
.toString()
108110
assertTrue(
109-
firstBatchSource.contains("internal actual object CommonMainStrings0"),
111+
firstBatchSource.contains("internal object CommonMainStrings0"),
110112
firstBatchSource
111113
)
112114
assertTrue(
113-
firstBatchSource.contains("public actual val key_000: StringResource by"),
115+
firstBatchSource.contains("internal val key_000: StringResource by"),
114116
firstBatchSource
115117
)
116-
assertFalse(
118+
assertTrue(firstBatchSource.contains("private fun init_key_000(): StringResource"), firstBatchSource)
119+
assertTrue(firstBatchSource.contains("StringResource(R.string.key_000)"), firstBatchSource)
120+
assertTrue(
117121
firstBatchSource.contains("public actual val MR.strings.key_000: StringResource"),
118122
firstBatchSource
119123
)
120-
assertTrue(firstBatchSource.contains("private fun init_key_000(): StringResource"), firstBatchSource)
121-
assertTrue(firstBatchSource.contains("StringResource(R.string.key_000)"), firstBatchSource)
122124

123125
val secondBatchSource = androidResult.fileSpecs
124-
.single { it.name == "CommonMainStrings1.androidMain" }
126+
.single { it.name == "CommonMainStrings2.androidMain" }
125127
.toString()
126128
assertTrue(secondBatchSource.contains("StringResource(R.string.key_100)"), secondBatchSource)
127129
}
128130

129131
@Test
130-
fun appleActualStringsUsePlatformDetailsProvider() {
132+
fun appleActualStringsUseSharedPlatformDetailsProvider() {
131133
val commonResult = createCommonGenerator().generateExpectObject(
132134
parentObjectName = MR_CLASS_NAME,
133135
resources = createStrings(count = 1),
@@ -140,35 +142,46 @@ class StringBatchingTest {
140142
)!!
141143

142144
val containerSource = appleResult.typeSpec.toString()
145+
assertTrue(containerSource.contains("public actual override val __platformDetails"), containerSource)
143146
assertTrue(containerSource.contains("PlatformDetailsProvider.details"), containerSource)
144147

145148
val batchSource = appleResult.fileSpecs
146149
.single { it.name == "CommonMainStrings0.iosMain" }
147150
.toString()
148151
assertTrue(
149-
batchSource.contains("internal actual object CommonMainStrings0"),
152+
batchSource.contains("internal object CommonMainStrings0"),
150153
batchSource
151154
)
152-
assertTrue(batchSource.contains("public actual val key_000: StringResource by"), batchSource)
155+
assertTrue(batchSource.contains("internal val key_000: StringResource by"), batchSource)
153156
assertTrue(
154157
batchSource.contains("resourceId = \"key_000\""),
155158
batchSource
156159
)
157160
assertTrue(
158-
batchSource.contains("PlatformDetailsProvider.bundle"),
159-
batchSource
160-
)
161-
assertFalse(
162-
batchSource.contains("public actual val MR.strings.key_000: StringResource"),
161+
batchSource.contains("PlatformDetailsProvider.details.nsBundle"),
163162
batchSource
164163
)
164+
assertFalse(batchSource.contains("private val bundle"), batchSource)
165+
assertFalse(batchSource.contains("private val __platformDetails"), batchSource)
166+
assertTrue(batchSource.contains("public actual val MR.strings.key_000: StringResource"), batchSource)
167+
}
168+
169+
@Test
170+
fun targetSpecificStringsUseCorrectVisibility() {
171+
val result = createAndroidGenerator().generateObject(
172+
parentObjectName = "MRandroidMain",
173+
resources = createStrings(count = 1),
174+
sourceSetName = ANDROID_SOURCE_SET
175+
)!!
165176

166-
val providerSource = appleResult.fileSpecs
167-
.single { it.name == "PlatformDetailsProvider" }
177+
val batchSource = result.fileSpecs
178+
.single { it.name == "AndroidMainStrings0.androidMain" }
168179
.toString()
169-
assertTrue(providerSource.contains("internal object PlatformDetailsProvider"), providerSource)
170-
assertTrue(providerSource.contains("NSBundle.loadableBundle(\"com.example.bundle\")"), providerSource)
171-
assertTrue(providerSource.contains("ResourcePlatformDetails(bundle)"), providerSource)
180+
181+
// Batch object should be public (visibilityModifier)
182+
assertTrue(batchSource.contains("internal object AndroidMainStrings0"), batchSource)
183+
// Extension property should be public
184+
assertTrue(batchSource.contains("public val MRandroidMain.strings.key_000: StringResource"), batchSource)
172185
}
173186

174187
private fun createCommonGenerator(): ResourceTypeGenerator<StringMetadata> {
@@ -188,8 +201,7 @@ class StringBatchingTest {
188201
return createGenerator(
189202
platformResourceGenerator = AppleStringResourceGenerator(
190203
baseLocalizationRegion = "en",
191-
resourcesGenerationDir = File("."),
192-
bundleIdentifier = "com.example.bundle"
204+
resourcesGenerationDir = File(".")
193205
)
194206
)
195207
}
@@ -206,8 +218,7 @@ class StringBatchingTest {
206218
generator = StringResourceGenerator(strictLineBreaks = false),
207219
platformResourceGenerator = platformResourceGenerator,
208220
filter = {},
209-
resourcesPackageName = PACKAGE_NAME,
210-
generatePropertiesAsExtensions = true
221+
resourcesPackageName = PACKAGE_NAME
211222
)
212223
}
213224

0 commit comments

Comments
 (0)