• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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 android.healthconnect.cts.ui
18 
19 import android.health.connect.HealthPermissions.READ_ACTIVITY_INTENSITY
20 import android.health.connect.HealthPermissions.WRITE_ACTIVITY_INTENSITY
21 import android.health.connect.datatypes.ActivityIntensityRecord
22 import android.health.connect.datatypes.RespiratoryRateRecord
23 import android.health.connect.datatypes.StepsRecord
24 import android.healthconnect.cts.lib.RecordFactory.YESTERDAY_11AM
25 import android.healthconnect.cts.lib.RecordFactory.newEmptyMetadata
26 import android.platform.test.annotations.RequiresFlagsEnabled
27 import android.text.format.DateFormat.is24HourFormat
28 import com.android.healthfitness.flags.Flags.FLAG_ACTIVITY_INTENSITY
29 
30 @RequiresFlagsEnabled(FLAG_ACTIVITY_INTENSITY)
31 class ActivityIntensityTest : BaseDataTypeTest<ActivityIntensityRecord>() {
32 
33     override val dataTypeString = "Activity intensity"
34     override val dataCategoryString = "Activity"
35     override val permissionString = "Activity intensity"
36     override val permissions = listOf(READ_ACTIVITY_INTENSITY, WRITE_ACTIVITY_INTENSITY)
37 
38     override val sameCategoryDataTypeString = "Steps"
39     override val anotherCategoryString = "Vitals"
40 
createRecordnull41     override fun createRecord() =
42         ActivityIntensityRecord.Builder(
43                 newEmptyMetadata(),
44                 YESTERDAY_11AM.toInstant(),
45                 YESTERDAY_11AM.plusMinutes(15).toInstant(),
46                 ActivityIntensityRecord.ACTIVITY_INTENSITY_TYPE_VIGOROUS,
47             )
48             .build()
49 
50     override val expectedRecordHeader =
51         if (is24HourFormat(context)) "11:00 - 11:15 • ${context.packageName}"
52         else "11:00 AM - 11:15 AM • ${context.packageName}"
53 
54     override val expectedRecordTitle = "Vigorous"
55     override val expectedRecordSubtitle = null
56 
57     override fun createRecordToBeDeleted() =
58         ActivityIntensityRecord.Builder(
59                 newEmptyMetadata(),
60                 YESTERDAY_11AM.plusHours(3).toInstant(),
61                 YESTERDAY_11AM.plusHours(4).plusMinutes(29).toInstant(),
62                 ActivityIntensityRecord.ACTIVITY_INTENSITY_TYPE_MODERATE,
63             )
64             .build()
65 
66     override val expectedRecordToBeDeletedHeader =
67         if (is24HourFormat(context)) "14:00 - 15:29 • ${context.packageName}"
68         else "2:00 PM - 3:29 PM • ${context.packageName}"
69 
70     override val expectedRecordToBeDeletedTitle = "Moderate"
71 
72     override fun createSameCategoryRecord() =
73         StepsRecord.Builder(
74                 newEmptyMetadata(),
75                 YESTERDAY_11AM.minusDays(1).minusHours(2).toInstant(),
76                 YESTERDAY_11AM.minusDays(1).minusHours(1).toInstant(),
77                 50,
78             )
79             .build()
80 
81     override fun createAnotherCategoryRecord() =
82         RespiratoryRateRecord.Builder(
83                 newEmptyMetadata(),
84                 YESTERDAY_11AM.minusDays(1).minusHours(4).toInstant(),
85                 14.0,
86             )
87             .build()
88 }
89