1526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/*
2526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  Licensed to the Apache Software Foundation (ASF) under one or more
3526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  contributor license agreements.  See the NOTICE file distributed with
4526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  this work for additional information regarding copyright ownership.
5526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  The ASF licenses this file to You under the Apache License, Version 2.0
6526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  (the "License"); you may not use this file except in compliance with
7526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  the License.  You may obtain a copy of the License at
8526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
9526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *     http://www.apache.org/licenses/LICENSE-2.0
10526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
11526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  Unless required by applicable law or agreed to in writing, software
12526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  distributed under the License is distributed on an "AS IS" BASIS,
13526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  See the License for the specific language governing permissions and
15526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *  limitations under the License.
16526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
17526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
18526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/**
19526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt* @author Vera Y. Petrashkova
20526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt*/
21526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
22526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtpackage org.apache.harmony.auth.tests.javax.security.sasl.serialization;
23526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
24526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtimport java.io.Serializable;
25526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
26526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtimport javax.security.sasl.RealmChoiceCallback;
27526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
28526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtimport org.apache.harmony.testframework.serialization.SerializationTest;
29526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
30526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt/**
31526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt * Test for RealmChoiceCallback serialization
32526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt *
33526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt */
34526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
35526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidtpublic class RealmChoiceCallbackTest extends SerializationTest implements
36526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        SerializationTest.SerializableAssert {
37526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
38526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    public static String[] msgs = {
39526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            "New String",
40526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            "Another string",
41526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            "Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string. Long string.",
42526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            "t"};
43526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
44526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    public static final int [] idx = {2, 3};
45526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
46526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    @Override
47526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    protected Object[] getData() {
48526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        Object [] oo = {
49526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                new RealmChoiceCallback(msgs[0], msgs, 0, true),
50526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                new RealmChoiceCallback(msgs[1], msgs, 1, true),
51526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                new RealmChoiceCallback(msgs[1], msgs, 0, false),
52526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                new RealmChoiceCallback(msgs[2], msgs, 0, false)
53526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
54526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        };
55526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        for (Object element : oo) {
56526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            RealmChoiceCallback rc = (RealmChoiceCallback)element;
57526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            if (rc.allowMultipleSelections()) {
58526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                rc.setSelectedIndexes(idx);
59526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            } else {
60526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                rc.setSelectedIndex(msgs.length - 1);
61526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            }
62526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        }
63526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        return oo;
64526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    }
65526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
66526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    public void assertDeserialized(Serializable oref, Serializable otest) {
67526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        RealmChoiceCallback ref = (RealmChoiceCallback) oref;
68526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        RealmChoiceCallback test = (RealmChoiceCallback) otest;
69526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
70526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        boolean all = ref.allowMultipleSelections();
71526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        assertEquals(all, test.allowMultipleSelections());
72526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        String prompt = ref.getPrompt();
73526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        assertEquals(prompt, test.getPrompt());
74526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
75526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        String [] ch = ref.getChoices();
76526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        String [] tCh = test.getChoices();
77526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        assertEquals(ch.length, tCh.length);
78526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        for (int i = 0; i < ch.length; i++) {
79526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            assertEquals(ch[i], tCh[i]);
80526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        }
81526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        assertEquals(ref.getDefaultChoice(), test.getDefaultChoice());
82526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        int [] in = ref.getSelectedIndexes();
83526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        int [] tIn = test.getSelectedIndexes();
84526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt//        assertNull("in is not null", in);
85526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt//        assertNull("tIn is not null", tIn);
86526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt
87526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        if (!all) {
88526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            assertEquals("Incorrect length in ", in.length, 1);
89526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            assertEquals("Incorrect length tIn ", tIn.length, 1);
90526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            assertEquals("Incorrect index", in[0], tIn[0]);
91526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        } else {
92526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            assertEquals("Incorrect length", in.length, tIn.length);
93526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            for (int i = 0; i < in.length; i++) {
94526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt                assertEquals(in[i], tIn[i]);
95526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt            }
96526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt        }
97526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt    }
98526fc2a7dc09b4450086cdec313a5c44d36b10fdDmitry Shmidt}