/* * JBoss, Home of Professional Open Source * Copyright 2011, Red Hat, Inc. and/or its affiliates, and individual * contributors as indicated by the @authors tag. All rights reserved. * See the copyright.txt in the distribution for a full listing * of individual contributors. * * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU General Public License, v. 2.0. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License, * v. 2.0 along with this distribution; if not, write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. */ package org.mobicents.diameter.stack.base; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Arrays; import java.util.Collection; import org.jdiameter.api.ApplicationId; import org.jdiameter.api.IllegalDiameterStateException; import org.jdiameter.api.InternalException; import org.jdiameter.api.Message; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.mobicents.diameter.stack.functional.StackConfig; import org.mobicents.diameter.stack.functional.StackCreator; /** * * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> * @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a> */ @RunWith(Parameterized.class) public class MessageFlagsTest { private static StackCreator stackCreator = new StackCreator(); static { try { stackCreator.init(new StackConfig()); } catch (IllegalDiameterStateException e) { e.printStackTrace(); } catch (InternalException e) { e.printStackTrace(); } } private boolean expected_R; private boolean expected_P; private boolean expected_E; private boolean expected_T; private boolean initFlags; private Message createEmptyMessage() throws InternalException, IllegalDiameterStateException { Message m = stackCreator.getSessionFactory().getNewRawSession().createMessage(123, ApplicationId.createByAccAppId(3)); // Initialize flags with the default value m.setRequest(initFlags); m.setProxiable(initFlags); m.setError(initFlags); m.setReTransmitted(initFlags); return m; } private Message fillMessageFlags(Message m, boolean r, boolean p, boolean e, boolean t) { m.setRequest(r); m.setProxiable(p); m.setError(e); m.setReTransmitted(t); return m; } @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][]{ {true, true, true, true, true}, {true, true, true, true, false}, {true, true, true, false, true}, {true, true, true, false, false}, {true, true, false, true, true}, {true, true, false, true, false}, {true, true, false, false, true}, {true, true, false, false, false}, {true, false, true, true, true}, {true, false, true, true, false}, {true, false, true, false, true}, {true, false, true, false, false}, {true, false, false, true, true}, {true, false, false, true, false}, {true, false, false, false, true}, {true, false, false, false, false}, {false, true, true, true, true}, {false, true, true, true, false}, {false, true, true, false, true}, {false, true, true, false, false}, {false, true, false, true, true}, {false, true, false, true, false}, {false, true, false, false, true}, {false, true, false, false, false}, {false, false, true, true, true}, {false, false, true, true, false}, {false, false, true, false, true}, {false, false, true, false, false}, {false, false, false, true, true}, {false, false, false, true, false}, {false, false, false, false, true}, {false, false, false, false, false} }); } public MessageFlagsTest(boolean init, boolean r, boolean p, boolean e, boolean t) { this.initFlags = init; this.expected_R = r; this.expected_P = p; this.expected_E = e; this.expected_T = t; System.out.println("Testing with flags: Init[" + initFlags + "] - R[" + expected_R + "] P[" + expected_P + "] E[" + expected_E + "] T[" + expected_T + "]"); } @Test public void testFlags() { try { // Create the message Message m = createEmptyMessage(); // Set the flags fillMessageFlags(m, expected_R, expected_P, expected_E, expected_T); // Get the flags boolean received_R = m.isRequest(); boolean received_P = m.isProxiable(); boolean received_E = m.isError(); boolean received_T = m.isReTransmitted(); // Confirm it's OK assertTrue("Wrong flags: R[rcv " + received_R + "; exp " + expected_R + "], P[rcv " + received_P + "; exp " + expected_P + "]" + "E[rcv " + received_E + "; exp " + expected_E + "], T[rcv " + received_T + "; exp " + expected_T + "]", (expected_R == received_R) && (expected_P == received_P) && (expected_E == received_E) && (expected_T == received_T)); } catch (InternalException e) { fail(e.getMessage()); } catch (IllegalDiameterStateException e) { fail(e.getMessage()); } } }