12ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson/*
22ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Copyright (C) 2011 The Android Open Source Project
32ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson *
42ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Licensed under the Apache License, Version 2.0 (the "License");
52ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * you may not use this file except in compliance with the License.
62ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * You may obtain a copy of the License at
72ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson *
82ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson *      http://www.apache.org/licenses/LICENSE-2.0
92ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson *
102ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Unless required by applicable law or agreed to in writing, software
112ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * distributed under the License is distributed on an "AS IS" BASIS,
122ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * See the License for the specific language governing permissions and
142ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * limitations under the License.
152ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson */
162ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
172ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonpackage com.android.nfc.snep;
182ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
192ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport java.io.IOException;
202ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
212ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepClient;
222ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepMessage;
232ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport com.android.nfc.snep.SnepServer;
242ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
252ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.nfc.NdefMessage;
262ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.nfc.NdefRecord;
272ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.test.AndroidTestCase;
282ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport android.util.Log;
292ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
302ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonimport java.lang.StringBuffer;
312ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
322ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson/**
332ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson * Tests connectivity to a custom SNEP server, using a physical NFC device.
342ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson */
352ef360deaff9f17aa72d5749ceee283cc80897afBen Dodsonpublic class SnepCustomClientTests extends AndroidTestCase {
362ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    private static final String TAG = "nfcTest";
372ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
382ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    public void setUp() {
392ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        Log.d(TAG, "Waiting for service to restart...");
402ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        try {
412ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson            Thread.sleep(6000);
422ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        } catch (InterruptedException e) {}
432ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        Log.d(TAG, "Running test.");
442ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
452ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
462ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    public void testPutSmall() throws IOException {
472ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        SnepClient client = getSnepClient();
482ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.connect();
492ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.put(getSmallNdef());
502ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.close();
512ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
522ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
532ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    public void testPutLarge() throws IOException {
542ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        SnepClient client = getSnepClient();
552ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.connect();
562ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.put(getLargeNdef());
572ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.close();
582ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
592ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
602ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    public void testPutTwice() throws IOException {
612ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        SnepClient client = getSnepClient();
622ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.connect();
632ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.put(getSmallNdef());
642ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.put(getSmallNdef());
652ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.close();
662ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
672ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
682ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    public void testGetSmall() throws IOException {
692ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        SnepClient client = getSnepClient();
702ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        client.connect();
712ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        SnepMessage response = client.get(getSmallNdef());
722ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        assertEquals(SnepMessage.RESPONSE_SUCCESS, response.getField());
732ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
742ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
752ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    private NdefMessage getSmallNdef() {
762ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        NdefRecord rec = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, NdefRecord.RTD_URI,
772ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson                new byte[0], "http://android.com".getBytes());
782ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        return new NdefMessage(new NdefRecord[] { rec });
792ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
802ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
812ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    private NdefMessage getLargeNdef() {
822ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        int size = 3000;
832ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        StringBuffer string = new StringBuffer(size);
842ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        for (int i = 0; i < size; i++) {
852ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson            string.append('A' + (i % 26));
862ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        }
872ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        NdefRecord rec = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(),
882ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson                new byte[0], string.toString().getBytes());
892ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        return new NdefMessage(new NdefRecord[] { rec });
902ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
912ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson
922ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    private SnepClient getSnepClient() {
932ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson        return new SnepClient(SnepValidationServerTests.SERVICE_NAME);
942ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson    }
952ef360deaff9f17aa72d5749ceee283cc80897afBen Dodson}
96