blob: 5d8f99e77c9cbf4974aaaf7a972daf525b617cf4 [file] [log] [blame]
Frank Wang4e848042017-08-03 19:48:11 +08001/*
2 * Copyright 2017-present Open Networking Foundation
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
17package org.onosproject.net.pi.runtime;
18
19import com.google.common.testing.EqualsTester;
20import org.junit.Test;
Carmelo Cascone87892e22017-11-13 16:01:29 -080021import org.onosproject.net.pi.model.PiActionId;
22import org.onosproject.net.pi.model.PiActionParamId;
Carmelo Casconee44592f2018-09-12 02:24:47 -070023import org.onosproject.net.pi.model.PiActionProfileId;
Frank Wang4e848042017-08-03 19:48:11 +080024
25import static org.hamcrest.MatcherAssert.assertThat;
26import static org.hamcrest.Matchers.is;
27import static org.hamcrest.Matchers.notNullValue;
28import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
29import static org.onlab.util.ImmutableByteSequence.copyFrom;
30import static org.onosproject.net.pi.runtime.PiConstantsTest.DST_ADDR;
31import static org.onosproject.net.pi.runtime.PiConstantsTest.MOD_NW_DST;
Carmelo Cascone99c59db2019-01-17 15:39:35 -080032import static org.onosproject.net.pi.runtime.PiConstantsTest.MOD_VLAN_VID;
33import static org.onosproject.net.pi.runtime.PiConstantsTest.VID;
Frank Wang4e848042017-08-03 19:48:11 +080034
35/**
Carmelo Casconecb4327a2018-09-11 15:17:23 -070036 * Unit tests for PiActionProfileMember class.
Frank Wang4e848042017-08-03 19:48:11 +080037 */
Carmelo Casconecb4327a2018-09-11 15:17:23 -070038public class PiActionProfileMemberTest {
Frank Wang4e848042017-08-03 19:48:11 +080039
Carmelo Casconee44592f2018-09-12 02:24:47 -070040 private final PiActionProfileId actionProfileId1 = PiActionProfileId.of("foo");
41 private final PiActionProfileId actionProfileId2 = PiActionProfileId.of("bar");
Carmelo Cascone99c59db2019-01-17 15:39:35 -080042 private final PiActionProfileMemberId piActionProfileMemberId1 = PiActionProfileMemberId.of(10);
43 private final PiActionProfileMemberId piActionProfileMemberId2 = PiActionProfileMemberId.of(20);
44 private final PiAction piAction1 = PiAction.builder().withId(PiActionId.of(MOD_NW_DST))
Frank Wang4e848042017-08-03 19:48:11 +080045 .withParameter(new PiActionParam(PiActionParamId.of(DST_ADDR), copyFrom(0x0a010101)))
46 .build();
Carmelo Cascone99c59db2019-01-17 15:39:35 -080047 private final PiAction piAction2 = PiAction.builder().withId(PiActionId.of(MOD_VLAN_VID))
48 .withParameter(new PiActionParam(PiActionParamId.of(VID), copyFrom(0x0b)))
49 .build();
Frank Wang4e848042017-08-03 19:48:11 +080050
Carmelo Casconecb4327a2018-09-11 15:17:23 -070051 private final PiActionProfileMember piActionProfileMember1 = PiActionProfileMember.builder()
Carmelo Casconee44592f2018-09-12 02:24:47 -070052 .forActionProfile(actionProfileId1)
Carmelo Cascone99c59db2019-01-17 15:39:35 -080053 .withId(piActionProfileMemberId1)
54 .withAction(piAction1)
Frank Wang4e848042017-08-03 19:48:11 +080055 .build();
Carmelo Casconecb4327a2018-09-11 15:17:23 -070056 private final PiActionProfileMember sameAsPiActionProfileMember1 = PiActionProfileMember.builder()
Carmelo Casconee44592f2018-09-12 02:24:47 -070057 .forActionProfile(actionProfileId1)
Carmelo Cascone99c59db2019-01-17 15:39:35 -080058 .withId(piActionProfileMemberId1)
59 .withAction(piAction1)
Frank Wang4e848042017-08-03 19:48:11 +080060 .build();
Carmelo Casconecb4327a2018-09-11 15:17:23 -070061 private final PiActionProfileMember piActionProfileMember2 = PiActionProfileMember.builder()
Carmelo Casconee44592f2018-09-12 02:24:47 -070062 .forActionProfile(actionProfileId1)
Carmelo Cascone99c59db2019-01-17 15:39:35 -080063 .withId(piActionProfileMemberId2)
64 .withAction(piAction2)
Frank Wang4e848042017-08-03 19:48:11 +080065 .build();
Carmelo Cascone99c59db2019-01-17 15:39:35 -080066 private final PiActionProfileMember piActionProfileMember3 = PiActionProfileMember.builder()
Carmelo Casconee44592f2018-09-12 02:24:47 -070067 .forActionProfile(actionProfileId2)
Carmelo Cascone99c59db2019-01-17 15:39:35 -080068 .withId(piActionProfileMemberId1)
69 .withAction(piAction1)
Carmelo Casconee44592f2018-09-12 02:24:47 -070070 .build();
Frank Wang4e848042017-08-03 19:48:11 +080071
72 /**
Carmelo Casconecb4327a2018-09-11 15:17:23 -070073 * Checks that the PiActionProfileMember class is immutable.
Frank Wang4e848042017-08-03 19:48:11 +080074 */
75 @Test
76 public void testImmutability() {
77
Carmelo Casconecb4327a2018-09-11 15:17:23 -070078 assertThatClassIsImmutable(PiActionProfileMember.class);
Frank Wang4e848042017-08-03 19:48:11 +080079 }
80
81 /**
82 * Checks the operation of equals(), hashCode() and toString() methods.
83 */
84 @Test
85 public void testEquals() {
86
87 new EqualsTester()
Carmelo Casconecb4327a2018-09-11 15:17:23 -070088 .addEqualityGroup(piActionProfileMember1, sameAsPiActionProfileMember1)
89 .addEqualityGroup(piActionProfileMember2)
Carmelo Cascone99c59db2019-01-17 15:39:35 -080090 .addEqualityGroup(piActionProfileMember3)
Frank Wang4e848042017-08-03 19:48:11 +080091 .testEquals();
92 }
93
94 /**
Carmelo Casconecb4327a2018-09-11 15:17:23 -070095 * Checks the methods of PiActionProfileMember.
Frank Wang4e848042017-08-03 19:48:11 +080096 */
97 @Test
98 public void testMethods() {
99
Carmelo Casconecb4327a2018-09-11 15:17:23 -0700100 assertThat(piActionProfileMember1, is(notNullValue()));
Carmelo Cascone99c59db2019-01-17 15:39:35 -0800101 assertThat(piActionProfileMember1.id(), is(piActionProfileMemberId1));
102 assertThat(piActionProfileMember1.action(), is(piAction1));
Frank Wang4e848042017-08-03 19:48:11 +0800103 }
104}