1 /*
<lambda>null2  * Copyright 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.compose.foundation.content
18 
19 import android.content.ClipDescription
20 import android.os.Build
21 import com.google.common.truth.FailureMetadata
22 import com.google.common.truth.Subject
23 import com.google.common.truth.Truth
24 
25 /** Truth extension for ClipDescription. */
26 internal class ClipDescriptionSubject
27 private constructor(failureMetadata: FailureMetadata?, private val subject: ClipDescription?) :
28     Subject(failureMetadata, subject) {
29 
30     companion object {
31         internal val SUBJECT_FACTORY: Factory<ClipDescriptionSubject?, ClipDescription?> =
32             Factory { failureMetadata, subject ->
33                 ClipDescriptionSubject(failureMetadata, subject)
34             }
35     }
36 
37     /**
38      * Checks the equality of two [ClipDescription]s.
39      *
40      * @param clipDescription the [ClipDescription] to be matched.
41      */
42     fun isEqualToClipDescription(clipDescription: ClipDescription) {
43         if (subject === clipDescription) return
44         check("isNotNull()").that(subject).isNotNull()
45         check("getMimeTypeCount()")
46             .that(subject!!.mimeTypeCount)
47             .isEqualTo(clipDescription.mimeTypeCount)
48         for (i in 0 until subject.mimeTypeCount) {
49             check("getMimeType($i)")
50                 .that(subject.getMimeType(i))
51                 .isEqualTo(clipDescription.getMimeType(i))
52         }
53         if (Build.VERSION.SDK_INT >= 24) {
54             check("getExtras()").that(subject.extras).isEqualTo(clipDescription.extras)
55         }
56         check("getLabel()").that(subject.label).isEqualTo(clipDescription.label)
57         if (Build.VERSION.SDK_INT >= 31) {
58             check("isStyledText()")
59                 .that(subject.isStyledText)
60                 .isEqualTo(clipDescription.isStyledText)
61             check("getClassificationStatus()")
62                 .that(subject.classificationStatus)
63                 .isEqualTo(clipDescription.classificationStatus)
64         }
65     }
66 }
67 
assertClipDescriptionnull68 internal fun assertClipDescription(clipDescription: ClipDescription?): ClipDescriptionSubject {
69     return Truth.assertAbout(ClipDescriptionSubject.SUBJECT_FACTORY).that(clipDescription)!!
70 }
71