From a2391866a00c026bd9d4124215a7847f4c190ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sastre=20Fl=C3=B3rez?= Date: Mon, 15 Jun 2026 16:28:23 +0200 Subject: [PATCH 1/5] Do not ignore count variable in the PreviewParameterprovider --- ...osablePreviewWithPreviewParameterMapper.kt | 8 +++++- .../previewparameterscount/Composables.kt | 28 +++++++++++++++++++ .../AndroidComposablePreviewScannerTest.kt | 15 ++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt diff --git a/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt b/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt index d42323b..d49a3cc 100644 --- a/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt +++ b/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt @@ -5,6 +5,7 @@ import sergio.sastre.composable.preview.scanner.core.preview.ComposablePreview import sergio.sastre.composable.preview.scanner.core.preview.ProvideComposablePreview import java.lang.reflect.Method import kotlin.math.max +import kotlin.math.min import kotlin.reflect.KFunction import kotlin.reflect.KParameter import kotlin.reflect.full.declaredMemberFunctions @@ -92,14 +93,19 @@ data class ComposablePreviewWithPreviewParameterMapper( val values = getPropertyValue(providerInstance, "values") as? Sequence ?: return sequenceOf(provideComposablePreview(this)) + val count = getPropertyValue(providerInstance, "count") as? Int + ?: values.count() + val limit = getPropertyValue(previewParameterAnnotation, "limit") as? Int ?: Int.MAX_VALUE + val displayedValuesCount = min(count, limit) + val getDisplayNameMethod = providerInstance::class.declaredMemberFunctions.getDisplayNameFunction() return values - .take(max(0, limit)) + .take(max(0, displayedValuesCount)) .mapIndexed { index, value -> provideComposablePreview( composablePreviewMapper = this, diff --git a/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt new file mode 100644 index 0000000..89c4a33 --- /dev/null +++ b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt @@ -0,0 +1,28 @@ +package sergio.sastre.composable.preview.scanner.android.previewparameterscount + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import sergio.sastre.composable.preview.scanner.AndroidStringConstructorParameterProvider +import sergio.sastre.composable.preview.scanner.AndroidStringProvider + +val stringValues: Sequence = sequenceOf("Jim", "Jens") +class StringMinusCountParameterProvider( + override val values: Sequence = stringValues, + override val count: Int = -1, +) : PreviewParameterProvider + +@Composable +fun Example(name: String?){ + Text(name.toString()) +} + +@Preview(group = "count < 0") +@Composable +fun ExamplePreviewProviderInParameterConstructor( + @PreviewParameter(provider = StringMinusCountParameterProvider ::class) name: String? +){ + Example(name) +} \ No newline at end of file diff --git a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt index 979d3d9..c850959 100644 --- a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt +++ b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt @@ -17,6 +17,7 @@ import sergio.sastre.composable.preview.scanner.android.customextraannotation.Fo import sergio.sastre.composable.preview.scanner.android.customextraannotation.ScreenshotTestConfig import sergio.sastre.composable.preview.scanner.android.excluded.ExcludeScreenshot import sergio.sastre.composable.preview.scanner.android.included.IncludeScreenshot +import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringMinusCountParameterProvider import sergio.sastre.composable.preview.scanner.core.scanresult.RequiresLargeHeap import sergio.sastre.composable.preview.scanner.core.preview.getAnnotation import sergio.sastre.composable.preview.scanner.core.scanresult.filter.exceptions.RepeatableAnnotationNotSupportedException @@ -401,6 +402,20 @@ class AndroidComposablePreviewScannerTest { } } + @Test + fun `GIVEN preview parameters with count less than 0 THEN it does not return previews`() { + val stringProvider = StringMinusCountParameterProvider() + + val previewsWithParameterProviderInConstructor = + AndroidComposablePreviewScanner() + .scanPackageTrees("sergio.sastre.composable.preview.scanner.android.previewparameterscount") + .filterPreviews { it.group == "count < 0" } + .getPreviews() + + assert(stringProvider.count <= 0) + assert(previewsWithParameterProviderInConstructor.isEmpty()) + } + @Test fun `GIVEN preview parameters with StringProvider and MultiplePreviews THEN it creates one preview for every combination`() { val stringProviderValuesSize = AndroidStringProvider().values.toList().size From 5715fb3285feb31cab165061fa3bf17ac8f405e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sastre=20Fl=C3=B3rez?= Date: Mon, 15 Jun 2026 16:56:36 +0200 Subject: [PATCH 2/5] handle count > limit --- .../previewparameterscount/Composables.kt | 17 ++++++++++++++--- .../AndroidComposablePreviewScannerTest.kt | 17 +++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt index 89c4a33..f74b328 100644 --- a/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt +++ b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt @@ -5,15 +5,18 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import sergio.sastre.composable.preview.scanner.AndroidStringConstructorParameterProvider -import sergio.sastre.composable.preview.scanner.AndroidStringProvider -val stringValues: Sequence = sequenceOf("Jim", "Jens") +val stringValues: Sequence = sequenceOf("Jim", "Jens", null) class StringMinusCountParameterProvider( override val values: Sequence = stringValues, override val count: Int = -1, ) : PreviewParameterProvider +class StringCountGreaterThanLimitParameterProvider( + override val values: Sequence = stringValues, + override val count: Int = 2, +) : PreviewParameterProvider + @Composable fun Example(name: String?){ Text(name.toString()) @@ -25,4 +28,12 @@ fun ExamplePreviewProviderInParameterConstructor( @PreviewParameter(provider = StringMinusCountParameterProvider ::class) name: String? ){ Example(name) +} + +@Preview(group = "count > limit and limit = 1") +@Composable +fun ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor( + @PreviewParameter(provider = StringCountGreaterThanLimitParameterProvider ::class, limit = 1) name: String? +){ + Example(name) } \ No newline at end of file diff --git a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt index c850959..ade6bf5 100644 --- a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt +++ b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt @@ -17,6 +17,7 @@ import sergio.sastre.composable.preview.scanner.android.customextraannotation.Fo import sergio.sastre.composable.preview.scanner.android.customextraannotation.ScreenshotTestConfig import sergio.sastre.composable.preview.scanner.android.excluded.ExcludeScreenshot import sergio.sastre.composable.preview.scanner.android.included.IncludeScreenshot +import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringCountGreaterThanLimitParameterProvider import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringMinusCountParameterProvider import sergio.sastre.composable.preview.scanner.core.scanresult.RequiresLargeHeap import sergio.sastre.composable.preview.scanner.core.preview.getAnnotation @@ -416,6 +417,22 @@ class AndroidComposablePreviewScannerTest { assert(previewsWithParameterProviderInConstructor.isEmpty()) } + @Test + fun `GIVEN preview parameters with count greater than limit THEN it does not return as many previews as limit`() { + val stringProvider = StringCountGreaterThanLimitParameterProvider() + val limit = 1 + val count = stringProvider.count + assert(count > limit) + + val previewsWithParameterProviderInConstructor = + AndroidComposablePreviewScanner() + .scanPackageTrees("sergio.sastre.composable.preview.scanner.android.previewparameterscount") + .filterPreviews { it.group == "count > limit and limit = 1" } + .getPreviews() + + assert(previewsWithParameterProviderInConstructor.size == limit) + } + @Test fun `GIVEN preview parameters with StringProvider and MultiplePreviews THEN it creates one preview for every combination`() { val stringProviderValuesSize = AndroidStringProvider().values.toList().size From cfa96fbe9d82ae29c56b2c2a3f2af1ddc7d29fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sastre=20Fl=C3=B3rez?= Date: Mon, 15 Jun 2026 17:13:51 +0200 Subject: [PATCH 3/5] Add other test cases --- .../previewparameterscount/Composables.kt | 26 ++++++++++++++ .../AndroidComposablePreviewScannerTest.kt | 34 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt index f74b328..54f632f 100644 --- a/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt +++ b/tests/src/main/java/sergio/sastre/composable/preview/scanner/android/previewparameterscount/Composables.kt @@ -12,11 +12,21 @@ class StringMinusCountParameterProvider( override val count: Int = -1, ) : PreviewParameterProvider +class StringCountGreaterThanValuesSizeParameterProvider( + override val values: Sequence = stringValues, + override val count: Int = stringValues.count() + 1, +) : PreviewParameterProvider + class StringCountGreaterThanLimitParameterProvider( override val values: Sequence = stringValues, override val count: Int = 2, ) : PreviewParameterProvider +class StringCountLessThanLimitParameterProvider( + override val values: Sequence = stringValues, + override val count: Int = 1, +) : PreviewParameterProvider + @Composable fun Example(name: String?){ Text(name.toString()) @@ -30,10 +40,26 @@ fun ExamplePreviewProviderInParameterConstructor( Example(name) } +@Preview(group = "count > values size") +@Composable +fun ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor( + @PreviewParameter(provider = StringCountGreaterThanValuesSizeParameterProvider ::class) name: String? +){ + Example(name) +} + @Preview(group = "count > limit and limit = 1") @Composable fun ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor( @PreviewParameter(provider = StringCountGreaterThanLimitParameterProvider ::class, limit = 1) name: String? ){ Example(name) +} + +@Preview(group = "count < limit and limit = 2") +@Composable +fun ExamplePreviewCountLessThanLimitProviderInParameterConstructor( + @PreviewParameter(provider = StringCountLessThanLimitParameterProvider ::class, limit = 2) name: String? +){ + Example(name) } \ No newline at end of file diff --git a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt index ade6bf5..b7fece8 100644 --- a/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt +++ b/tests/src/test/java/sergio/sastre/composable/preview/scanner/tests/api/main/scanner/AndroidComposablePreviewScannerTest.kt @@ -18,6 +18,8 @@ import sergio.sastre.composable.preview.scanner.android.customextraannotation.Sc import sergio.sastre.composable.preview.scanner.android.excluded.ExcludeScreenshot import sergio.sastre.composable.preview.scanner.android.included.IncludeScreenshot import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringCountGreaterThanLimitParameterProvider +import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringCountGreaterThanValuesSizeParameterProvider +import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringCountLessThanLimitParameterProvider import sergio.sastre.composable.preview.scanner.android.previewparameterscount.StringMinusCountParameterProvider import sergio.sastre.composable.preview.scanner.core.scanresult.RequiresLargeHeap import sergio.sastre.composable.preview.scanner.core.preview.getAnnotation @@ -417,6 +419,22 @@ class AndroidComposablePreviewScannerTest { assert(previewsWithParameterProviderInConstructor.isEmpty()) } + @Test + fun `GIVEN preview parameters with count greater than values size THEN it does return as many previews as values size`() { + val stringProvider = StringCountGreaterThanValuesSizeParameterProvider() + val count = stringProvider.count + val valuesSize = stringProvider.values.count() + assert(count > valuesSize) + + val previewsWithParameterProviderInConstructor = + AndroidComposablePreviewScanner() + .scanPackageTrees("sergio.sastre.composable.preview.scanner.android.previewparameterscount") + .filterPreviews { it.group == "count > values size" } + .getPreviews() + + assert(previewsWithParameterProviderInConstructor.size == valuesSize) + } + @Test fun `GIVEN preview parameters with count greater than limit THEN it does not return as many previews as limit`() { val stringProvider = StringCountGreaterThanLimitParameterProvider() @@ -433,6 +451,22 @@ class AndroidComposablePreviewScannerTest { assert(previewsWithParameterProviderInConstructor.size == limit) } + @Test + fun `GIVEN preview parameters with count less than limit THEN it does not return as many previews as count`() { + val stringProvider = StringCountLessThanLimitParameterProvider() + val limit = 2 + val count = stringProvider.count + assert(count < limit) + + val previewsWithParameterProviderInConstructor = + AndroidComposablePreviewScanner() + .scanPackageTrees("sergio.sastre.composable.preview.scanner.android.previewparameterscount") + .filterPreviews { it.group == "count < limit and limit = 2" } + .getPreviews() + + assert(previewsWithParameterProviderInConstructor.size == count) + } + @Test fun `GIVEN preview parameters with StringProvider and MultiplePreviews THEN it creates one preview for every combination`() { val stringProviderValuesSize = AndroidStringProvider().values.toList().size From f85f5e98a3613a031f4e0f00d13432460f5fff5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sastre=20Fl=C3=B3rez?= Date: Wed, 17 Jun 2026 21:44:18 +0200 Subject: [PATCH 4/5] new screenshots --- ...ctor.count_>_limit_and_limit_=_1_String_0.png | Bin 0 -> 681 bytes ...rConstructor.count_>_values_size_String_0.png | Bin 0 -> 681 bytes ...rConstructor.count_>_values_size_String_1.png | Bin 0 -> 1221 bytes ...rConstructor.count_>_values_size_String_2.png | Bin 0 -> 508 bytes ...ctor.count_<_limit_and_limit_=_2_String_0.png | Bin 0 -> 681 bytes ...ctor.count_>_limit_and_limit_=_1_String_0.png | Bin 0 -> 681 bytes ...rConstructor.count_>_values_size_String_0.png | Bin 0 -> 681 bytes ...rConstructor.count_>_values_size_String_1.png | Bin 0 -> 1221 bytes ...rConstructor.count_>_values_size_String_2.png | Bin 0 -> 508 bytes ...ctor.count_<_limit_and_limit_=_2_String_0.png | Bin 0 -> 681 bytes ...or.count_%3e_limit_and_limit_=_1_string_0.png | Bin 0 -> 611 bytes ...onstructor.count_%3e_values_size_string_0.png | Bin 0 -> 611 bytes ...onstructor.count_%3e_values_size_string_1.png | Bin 0 -> 1039 bytes ...onstructor.count_%3e_values_size_string_2.png | Bin 0 -> 452 bytes ...or.count_%3c_limit_and_limit_=_2_string_0.png | Bin 0 -> 611 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png create mode 100644 tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png create mode 100644 tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png create mode 100644 tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png create mode 100644 tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountLessThanLimitProviderInParameterConstructor.count_<_limit_and_limit_=_2_String_0.png create mode 100644 tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png create mode 100644 tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png create mode 100644 tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png create mode 100644 tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png create mode 100644 tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountLessThanLimitProviderInParameterConstructor.count_<_limit_and_limit_=_2_String_0.png create mode 100644 tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanlimitproviderinparameterconstructor.count_%3e_limit_and_limit_=_1_string_0.png create mode 100644 tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_0.png create mode 100644 tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_1.png create mode 100644 tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_2.png create mode 100644 tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountlessthanlimitproviderinparameterconstructor.count_%3c_limit_and_limit_=_2_string_0.png diff --git a/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png b/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5aa9385f42dd2f8317970c0a65b0e35e1cac378 GIT binary patch literal 681 zcmV;a0#^NrP) z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png b/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5aa9385f42dd2f8317970c0a65b0e35e1cac378 GIT binary patch literal 681 zcmV;a0#^NrP) z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png b/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d26e643e66cf964718fdd100fe6a389c8b3579b GIT binary patch literal 1221 zcmV;$1UmbPP)OnZ|3`)`3>0*ychq!*4{JoezW&pdk>IE zBoc{4B9TZ8En`KWC_QDviMre(`d8^W8&1?E8QBoY$c9KpHbgSAA(D{|(XWvYiZ+Rk ziO!0C5`7`sAbLRM#h4&^MQM2F|6@c;M4yR%K)P@VtxO2$!SK4sFNX~uTpus1Q=kGGnz|*jOa+r5x2lCwSU92za82Kvl zI49|=Z8*vnfT_rYiJgu08T}afHuC)A zE=D-~55V?I!#S;RG2!CXDpf{ui0F8~nv9$_j3nblU!r(z>Wt_^(R|oSqcN(CWU1kA zsvqf9zAYokNYQfGQq7Ac4|hu(IgQb)ku0*gko2knJ2~)dXwdI6*tFoyy0I} z0`-DVLKvF-MR@$Bb7R9gg9olU_iNF;CL@QX4i9{@+>dRz6(hL_>OOah?l2hv7UukR zujk0E) jUm}r6Boc{4;xgesA2D(tR*u)c00000NkvXXu0mjfnWapV literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png b/tests/src/test/screenshots/android/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png new file mode 100644 index 0000000000000000000000000000000000000000..93a989d727beac46e28adffff7dc1ffe56d5b8e4 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^HbAV)!3HEhm2vnmFfbnWba4!+hQSW;+VXA z#*6-nfa;lWYI|R3pr;N zOuR^dxZr#9+>&(_d!}yk*tx(aFi!LP6z5YKljMIEeQ}<*+4EXp+QfI$oBJ-F$S{*= zlrarb)6_rs(O~(}+#bmjxwF?SmQlWYpG9^t(4L}0s}H{RvUHLOKD0DO%=%x(b)}#2 zyId-{%l4i~_N(B2x_@!-gxjW(;s&Z`?w|Gg&|BfQ%U(FQN%Nsyq`Rf#Q}cAM9q!ix zzfFAibGg=%S1sQsypwP4D@=@ZFMP<*+mrVAkexY?tj2{-BC@wo`)s^|s@kBA- zX)E^s)w|mgAEuoses{v^xXqJ$a}0`GOFlbBI{YeF=)#@K{OOm> z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png b/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanLimitProviderInParameterConstructor.count_>_limit_and_limit_=_1_String_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5aa9385f42dd2f8317970c0a65b0e35e1cac378 GIT binary patch literal 681 zcmV;a0#^NrP) z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png b/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5aa9385f42dd2f8317970c0a65b0e35e1cac378 GIT binary patch literal 681 zcmV;a0#^NrP) z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png b/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d26e643e66cf964718fdd100fe6a389c8b3579b GIT binary patch literal 1221 zcmV;$1UmbPP)OnZ|3`)`3>0*ychq!*4{JoezW&pdk>IE zBoc{4B9TZ8En`KWC_QDviMre(`d8^W8&1?E8QBoY$c9KpHbgSAA(D{|(XWvYiZ+Rk ziO!0C5`7`sAbLRM#h4&^MQM2F|6@c;M4yR%K)P@VtxO2$!SK4sFNX~uTpus1Q=kGGnz|*jOa+r5x2lCwSU92za82Kvl zI49|=Z8*vnfT_rYiJgu08T}afHuC)A zE=D-~55V?I!#S;RG2!CXDpf{ui0F8~nv9$_j3nblU!r(z>Wt_^(R|oSqcN(CWU1kA zsvqf9zAYokNYQfGQq7Ac4|hu(IgQb)ku0*gko2knJ2~)dXwdI6*tFoyy0I} z0`-DVLKvF-MR@$Bb7R9gg9olU_iNF;CL@QX4i9{@+>dRz6(hL_>OOah?l2hv7UukR zujk0E) jUm}r6Boc{4;xgesA2D(tR*u)c00000NkvXXu0mjfnWapV literal 0 HcmV?d00001 diff --git a/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png b/tests/src/test/screenshots/sourceset/sergio.sastre.composable.preview.scanner.android.previewparameterscount.ComposablesKt.ExamplePreviewCountGreaterThanValuesSizeProviderInParameterConstructor.count_>_values_size_String_2.png new file mode 100644 index 0000000000000000000000000000000000000000..93a989d727beac46e28adffff7dc1ffe56d5b8e4 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^HbAV)!3HEhm2vnmFfbnWba4!+hQSW;+VXA z#*6-nfa;lWYI|R3pr;N zOuR^dxZr#9+>&(_d!}yk*tx(aFi!LP6z5YKljMIEeQ}<*+4EXp+QfI$oBJ-F$S{*= zlrarb)6_rs(O~(}+#bmjxwF?SmQlWYpG9^t(4L}0s}H{RvUHLOKD0DO%=%x(b)}#2 zyId-{%l4i~_N(B2x_@!-gxjW(;s&Z`?w|Gg&|BfQ%U(FQN%Nsyq`Rf#Q}cAM9q!ix zzfFAibGg=%S1sQsypwP4D@=@ZFMP<*+mrVAkexY?tj2{-BC@wo`)s^|s@kBA- zX)E^s)w|mgAEuoses{v^xXqJ$a}0`GOFlbBI{YeF=)#@K{OOm> z$!S)Sl#~tkectmq&-0%5{LMLEgJ=D?fq5Bv;w*>S$Cl~AhioE=x$E;jSTj`O9H@|(nF?%Q#`bW)z2f#dKY z+!)QWrPK1W5-+dx@)7gkm~xLDSK$>wXLxxeTi`|b6uy&iseA#iz@4>>W&zv}Z^H># zk?=TPVa~(V^=R*OQhuSd&m0t+Sq?A5U(wHFN8x-4@Qr$&$Y{U9!?k?RlvVyw^nELN zM7P1I#4P1+xLf)_S>-9qoP`_UA_+&BN0&#N1&Z8H_`de_Bs>OJNmxn`NLW!mPvLvD%9Z#Ic(P*(ZlcH98Zf)8RJGh`Bt>=2tjYRBDE zR(YP@?YJlP{13R;jvH7a_Bpuf?1`ByU)(9uSJA8)`sy(p&AMhL%ioZC{$(_420t8& z$6SbJUE}4IsbXGUnaa$H@?4a}WKsT_gkMNc=|Ky)P|z>>gdJDOqWoJmc&rC4*emu$ zr*0auD6iMQ-z01`w}ZEq`bBfUE+&ier`3SATLkbPoGYs$|JsiKkwy6x@QWH2fn_=* z;U?h#{3te?I^{_g<;juSKszPj9}-t3JmH%}=DO5(Ut+Q;PxuB@q_JQ#MPv!Lzwte__z7Gyc*jaHL$8j9T`LFp4$Q;+AF(+Yz P00000NkvXXu0mjfM3+h^ literal 0 HcmV?d00001 diff --git a/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanlimitproviderinparameterconstructor.count_%3e_limit_and_limit_=_1_string_0.png b/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanlimitproviderinparameterconstructor.count_%3e_limit_and_limit_=_1_string_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae6b953f9c97c74f0d082e1fce953328c3e66f5 GIT binary patch literal 611 zcmV-p0-XJcP)W0H11wlaNa+&t~eLCPTmy3XkVzF4fX^zKZOcRD- zcHqzFb4=6icC!PIST2{;Xf&wP>4=w+Dfm>L_6*PPX86fu@`~MVr>zLGMm{WOvl+Eo zEviG$~7t0#w;1Pg<7SF&Oh|}pL zwgmumV3kURR;$%3y^%q9G5vl&ro%RJ8s6jw;2Tsu_BPh@X$ybT9!Y8r7C};ARBm-wHw_B^x@B&^o4TVBM+|1f0 zL$=t=i5KvyUq-iNng}hVJQ@1uPgc}XKF&cDRo$gngOPZ0c;ObQ{i2m#})vT?kh*xfGj|pXnUa7CI?0a xkl5$g7C6yu?IZt6%kT`(@C?uJ4A1Z`#2;u~In3kZKV$#^002ovPDHLkV1n3fAy)tZ literal 0 HcmV?d00001 diff --git a/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_0.png b/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae6b953f9c97c74f0d082e1fce953328c3e66f5 GIT binary patch literal 611 zcmV-p0-XJcP)W0H11wlaNa+&t~eLCPTmy3XkVzF4fX^zKZOcRD- zcHqzFb4=6icC!PIST2{;Xf&wP>4=w+Dfm>L_6*PPX86fu@`~MVr>zLGMm{WOvl+Eo zEviG$~7t0#w;1Pg<7SF&Oh|}pL zwgmumV3kURR;$%3y^%q9G5vl&ro%RJ8s6jw;2Tsu_BPh@X$ybT9!Y8r7C};ARBm-wHw_B^x@B&^o4TVBM+|1f0 zL$=t=i5KvyUq-iNng}hVJQ@1uPgc}XKF&cDRo$gngOPZ0c;ObQ{i2m#})vT?kh*xfGj|pXnUa7CI?0a xkl5$g7C6yu?IZt6%kT`(@C?uJ4A1Z`#2;u~In3kZKV$#^002ovPDHLkV1n3fAy)tZ literal 0 HcmV?d00001 diff --git a/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_1.png b/tests/src/test/snapshots/images/Paparazzi_Preview_Test_android.previewparameterscount.composableskt.examplepreviewcountgreaterthanvaluessizeproviderinparameterconstructor.count_%3e_values_size_string_1.png new file mode 100644 index 0000000000000000000000000000000000000000..672b3e1cb8591aedff795a437e9c16a82bdc592f GIT binary patch literal 1039 zcmV+q1n~QbP)2QGtf_wJ2O%WgC%vW1;_K_nnfzP| zgJ2*Hq=7UskOtB~8pu+zSS(zx*IUVCGBJ?b$lKeSD~e(z!{N|C8b||aAPuB}G?4!l z$k}Y>uCK4%$;pX3I5=>vR?D59p1Q$c;O6sr^0%+AukPmNW+k!}8;{5C{QTS<9v-^= z{e5?IbmaQ|{>E*Y)UVlWE_H0T+wS7x!aY1ZxQ~yIe+!cJ-EMd7HzB#Yx{50M^z^j0 zmUV!_;MAU+8{1Rr*XeY!`f*n1a%utj^769uJgpSBy|c6P?Q;zJ{QS&;*J?`t-ov)qq$q?+15lBXoZ=jZ3>o`khjlrwT5F*>&2`g=lD?kPPnB+M23T8dCD zAPG;IZ$f!5<&{+P6v#3aSr$0GA98Yzih9EIW6a`=fBMnIuO{GLDP0g&{|K%o@pv;Kr@uE1B`(j;Wn`yrBr}m^gpHH@=Cz0w8!hZW^o)d z+qRiu7;Lp#vCU?~JkMk2^Lcb~MNtT2-tYHG(D8We>gQr+fwL?ViZD5V*6X!!ydTGL z-a<~NlTiEaR}mlAb-ViQcKbc>;cys*^4aZn@`KypQpS7jS*)t689>uCp{^`T`N8}B z{_Vv27+eujgLPe>oE&QSds%Am)Dsv1a%^%^frswNe(+x0f^I+fi2~1!D6Ih64 zS<3>WL6H`mrl~L{IW0H11wlaNa+&t~eLCPTmy3XkVzF4fX^zKZOcRD- zcHqzFb4=6icC!PIST2{;Xf&wP>4=w+Dfm>L_6*PPX86fu@`~MVr>zLGMm{WOvl+Eo zEviG$~7t0#w;1Pg<7SF&Oh|}pL zwgmumV3kURR;$%3y^%q9G5vl&ro%RJ8s6jw;2Tsu_BPh@X$ybT9!Y8r7C};ARBm-wHw_B^x@B&^o4TVBM+|1f0 zL$=t=i5KvyUq-iNng}hVJQ@1uPgc}XKF&cDRo$gngOPZ0c;ObQ{i2m#})vT?kh*xfGj|pXnUa7CI?0a xkl5$g7C6yu?IZt6%kT`(@C?uJ4A1Z`#2;u~In3kZKV$#^002ovPDHLkV1n3fAy)tZ literal 0 HcmV?d00001 From 6a44d729cd5c2d3df453cc5ba8dca6931c2149a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Sastre=20Fl=C3=B3rez?= Date: Wed, 17 Jun 2026 21:49:51 +0200 Subject: [PATCH 5/5] Apply CodeRabbitAi suggestion --- .../mappers/ComposablePreviewWithPreviewParameterMapper.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt b/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt index d49a3cc..0777977 100644 --- a/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt +++ b/core/src/main/java/sergio/sastre/composable/preview/scanner/core/preview/mappers/ComposablePreviewWithPreviewParameterMapper.kt @@ -93,13 +93,11 @@ data class ComposablePreviewWithPreviewParameterMapper( val values = getPropertyValue(providerInstance, "values") as? Sequence ?: return sequenceOf(provideComposablePreview(this)) - val count = getPropertyValue(providerInstance, "count") as? Int - ?: values.count() - val limit = getPropertyValue(previewParameterAnnotation, "limit") as? Int ?: Int.MAX_VALUE - val displayedValuesCount = min(count, limit) + val count = getPropertyValue(providerInstance, "count") as? Int + val displayedValuesCount = count?.let { min(it, limit) } ?: limit val getDisplayNameMethod = providerInstance::class.declaredMemberFunctions.getDisplayNameFunction()