14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/*
24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project
34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License");
54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * you may not use this file except in compliance with the License.
64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * You may obtain a copy of the License at
74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *      http://www.apache.org/licenses/LICENSE-2.0
94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software
114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS,
124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * See the License for the specific language governing permissions and
144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * limitations under the License.
154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
16677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawapackage com.android.vcard.tests.testutils;
174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.content.ContentValues;
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.test.AndroidTestCase;
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport com.android.vcard.VCardConfig;
22677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.VCardVerifier;
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/**
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * BaseClass for vCard unit tests with utility classes.
264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Please do not add each unit test here.
274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
28677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawapublic abstract class VCardTestsBase extends AndroidTestCase {
294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public static final int V21 = VCardConfig.VCARD_TYPE_V21_GENERIC;
304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public static final int V30 = VCardConfig.VCARD_TYPE_V30_GENERIC;
314560bdde6dd75cca49fc55b58aafb5d416b88ca3Daisuke Miyakawa    public static final int V40 = VCardConfig.VCARD_TYPE_V40_GENERIC;
324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    // Do not modify these during tests.
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForQP;
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForSJis;
364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForUtf8;
374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForQPAndSJis;
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForQPAndUtf8;
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForBase64V21;
404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected final ContentValues mContentValuesForBase64V30;
414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    protected VCardVerifier mVerifier;
43677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa    /**
44677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     * true when we shouldn't call {@link VCardVerifier#verify()}.
45677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     */
464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    private boolean mSkipVerification;
474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public VCardTestsBase() {
494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        super();
504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        // Not using constants in vCard code since it may be wrong.
514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQP = new ContentValues();
524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQP.put("ENCODING", "QUOTED-PRINTABLE");
534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForSJis = new ContentValues();
544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForSJis.put("CHARSET", "SHIFT_JIS");
554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForUtf8 = new ContentValues();
564199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForUtf8.put("CHARSET", "UTF-8");
574199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndSJis = new ContentValues();
584199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndSJis.put("ENCODING", "QUOTED-PRINTABLE");
594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndSJis.put("CHARSET", "SHIFT_JIS");
604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndUtf8 = new ContentValues();
614199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndUtf8.put("ENCODING", "QUOTED-PRINTABLE");
624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForQPAndUtf8.put("CHARSET", "UTF-8");
634199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForBase64V21 = new ContentValues();
644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForBase64V21.put("ENCODING", "BASE64");
654199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForBase64V30 = new ContentValues();
664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mContentValuesForBase64V30.put("ENCODING", "b");
674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    @Override
704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testAndroidTestCaseSetupProperly() {
714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        super.testAndroidTestCaseSetupProperly();
724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mSkipVerification = true;
734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
75677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa    /**
76677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     * Calls super's {@link #setUp()} and prepares {@link VCardVerifier}. We call
77677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     * {@link VCardVerifier#verify()} on {@link #tearDown()}.
78677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     */
794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    @Override
80677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa    public final void setUp() throws Exception{
814199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        super.setUp();
824199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier = new VCardVerifier(this);
834199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mSkipVerification = false;
844199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
854199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
86677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa    /**
87677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     * Calls super's {@link #tearDown()} and {@link VCardVerifier#verify()}.
88677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa     */
894199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    @Override
90677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa    public final void tearDown() throws Exception {
91677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa        // We don't want to forget to call verify() as it makes unit test successful silently even
92677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa        // when it shouldn't be, while each test case tends become so large to manage and sometimes
93677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa        // we had forgotten to call the method. That is why we override setUp()/tearDown() here.
944199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        if (!mSkipVerification) {
954199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa            mVerifier.verify();
964199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        }
97677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa        super.tearDown();
984199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
994199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa}
100