• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 com.android.car.audio;
18 
19 import static com.google.common.truth.Truth.assertWithMessage;
20 
21 import static org.junit.Assert.assertThrows;
22 
23 import androidx.test.ext.junit.runners.AndroidJUnit4;
24 
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 
29 @RunWith(AndroidJUnit4.class)
30 public final class RequestIdGeneratorTest {
31 
32     public static final int MAX_REQUESTS = 5;
33     private RequestIdGenerator mRequestIdGenerator;
34 
35     @Before
setup()36     public void setup() {
37         mRequestIdGenerator = new RequestIdGenerator();
38     }
39 
40     @Test
generateUniqueRequestId()41     public void generateUniqueRequestId() {
42         assertWithMessage("Generated request id")
43                 .that(mRequestIdGenerator.generateUniqueRequestId()).isEqualTo(0);
44     }
45 
46     @Test
generateUniqueRequestId_multipleTimes()47     public void generateUniqueRequestId_multipleTimes() {
48         mRequestIdGenerator.generateUniqueRequestId();
49 
50         long requestId = mRequestIdGenerator.generateUniqueRequestId();
51 
52         assertWithMessage("Second generated request id")
53                 .that(requestId).isEqualTo(1);
54     }
55 
56     @Test
generateUniqueRequestId_afterReleaseReturnPrevRequestId()57     public void generateUniqueRequestId_afterReleaseReturnPrevRequestId() {
58         long requestId = mRequestIdGenerator.generateUniqueRequestId();
59         mRequestIdGenerator.releaseRequestId(requestId);
60 
61         long regeneratedRequestId = mRequestIdGenerator.generateUniqueRequestId();
62 
63         assertWithMessage("Regenerated request id")
64                 .that(regeneratedRequestId).isEqualTo(requestId);
65     }
66 
67     @Test
generateUniqueRequestId_failsAfterLimit()68     public void generateUniqueRequestId_failsAfterLimit() {
69         RequestIdGenerator generator = new RequestIdGenerator(MAX_REQUESTS);
70 
71         IllegalStateException thrown = assertThrows(IllegalStateException.class, () -> {
72             for (int c = 0; c < MAX_REQUESTS + 1; c++) {
73                 generator.generateUniqueRequestId();
74             }
75         });
76 
77         assertWithMessage("Over limit request generation exception")
78                 .that(thrown).hasMessageThat().contains("Could not generate request id");
79     }
80 }
81