blob: 09cb6e97d24ef3b610476a680b0aab603625227d [file] [log] [blame]
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.core;
import android.bluetooth.AtCommandHandler;
import android.bluetooth.AtCommandResult;
import android.bluetooth.AtParser;
import java.util.*;
import junit.framework.*;
public class AtParserTest extends TestCase {
/* An AtCommandHandler instrumented for testing purposes
*/
private class HandlerTest extends AtCommandHandler {
boolean mBasicCalled, mActionCalled, mReadCalled, mTestCalled,
mSetCalled;
int mBasicReturn, mActionReturn, mReadReturn, mTestReturn, mSetReturn;
Object[] mSetArgs;
String mBasicArgs;
HandlerTest() {
this(AtCommandResult.ERROR, AtCommandResult.ERROR,
AtCommandResult.ERROR, AtCommandResult.ERROR,
AtCommandResult.ERROR);
}
HandlerTest(int a, int b, int c, int d, int e) {
mBasicReturn = a;
mActionReturn = b;
mReadReturn = c;
mSetReturn = d;
mTestReturn = e;
reset();
}
public void reset() {
mBasicCalled = false;
mActionCalled = false;
mReadCalled = false;
mSetCalled = false;
mTestCalled = false;
mSetArgs = null;
mBasicArgs = null;
}
public boolean wasCalled() { // helper
return mBasicCalled || mActionCalled || mReadCalled ||
mTestCalled || mSetCalled;
}
@Override
public AtCommandResult handleBasicCommand(String args) {
mBasicCalled = true;
mBasicArgs = args;
return new AtCommandResult(mBasicReturn);
}
@Override
public AtCommandResult handleActionCommand() {
mActionCalled = true;
return new AtCommandResult(mActionReturn);
}
@Override
public AtCommandResult handleReadCommand() {
mReadCalled = true;
return new AtCommandResult(mReadReturn);
}
@Override
public AtCommandResult handleSetCommand(Object[] args) {
mSetCalled = true;
mSetArgs = args;
return new AtCommandResult(mSetReturn);
}
@Override
public AtCommandResult handleTestCommand() {
mTestCalled = true;
return new AtCommandResult(mTestReturn);
}
}
private AtParser mParser;
@Override
protected void setUp() throws Exception {
super.setUp();
mParser = new AtParser();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/* Test that the right method is being called
*/
/* public void testBasic1() throws Exception {
HandlerTest D = new HandlerTest(0, 1, 1, 1, 1);
HandlerTest A = new HandlerTest(0, 1, 1, 1, 1);
mParser.register('D', D);
mParser.register('A', A);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process(" A T D = ? T 1 2 3 4 ").toStrings()));
assertTrue(D.mBasicCalled);
assertFalse(D.mActionCalled);
assertFalse(D.mTestCalled);
assertFalse(D.mSetCalled);
assertFalse(D.mReadCalled);
assertFalse(A.wasCalled());
assertEquals("=?T1234", D.mBasicArgs);
}
*/
/* Test some crazy strings
*//*
public void testBasic2() throws Exception {
HandlerTest A = new HandlerTest(0, 1, 1, 1, 1);
mParser.register('A', A);
assertTrue(Arrays.equals(
new String[]{},
mParser.process(" ").toStrings()));
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process(" a T a t \"\" 1 2 3 a 4 ")
.toStrings()));
assertEquals("T\"\"123A4", A.mBasicArgs);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process(" a T a t \"foo BaR12Z\" 1 2 3 a 4 ")
.toStrings()));
assertEquals("T\"foo BaR12Z\"123A4", A.mBasicArgs);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("ATA\"").toStrings()));
assertEquals("\"\"", A.mBasicArgs);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("ATA\"a").toStrings()));
assertEquals("\"a\"", A.mBasicArgs);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("ATa\" ").toStrings()));
assertEquals("\" \"", A.mBasicArgs);
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("ATA \"one \" two \"t hr ee ")
.toStrings()));
assertEquals("\"one \"TWO\"t hr ee \"", A.mBasicArgs);
}*/
/* Simple extended commands
*//*
public void testExt1() throws Exception {
HandlerTest A = new HandlerTest(1, 0, 0, 0, 0);
mParser.register("+A", A);
assertTrue(Arrays.equals(
new String[]{"ERROR"},
mParser.process("AT+B").toStrings()));
assertFalse(A.wasCalled());
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+A").toStrings()));
assertTrue(A.mActionCalled);
A.mActionCalled = false;
assertFalse(A.wasCalled());
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+A=").toStrings()));
assertTrue(A.mSetCalled);
A.mSetCalled = false;
assertFalse(A.wasCalled());
assertEquals(1, A.mSetArgs.length);
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+A=?").toStrings()));
assertTrue(A.mTestCalled);
A.mTestCalled = false;
assertFalse(A.wasCalled());
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+A?").toStrings()));
assertTrue(A.mReadCalled);
A.mReadCalled = false;
assertFalse(A.wasCalled());
A.reset();
}
*/
/* Test chained commands
*//*
public void testChain1() throws Exception {
HandlerTest A = new HandlerTest(0, 1, 1, 1, 1);
HandlerTest B = new HandlerTest(1, 0, 0, 0, 0);
HandlerTest C = new HandlerTest(1, 1, 1, 1, 1);
mParser.register('A', A);
mParser.register("+B", B);
mParser.register("+C", C);
assertTrue(Arrays.equals(
new String[]{"ERROR"},
mParser.process("AT+B;+C").toStrings()));
assertTrue(B.mActionCalled);
assertTrue(C.mActionCalled);
B.reset();
C.reset();
assertTrue(Arrays.equals(
new String[]{"ERROR"},
mParser.process("AT+C;+B").toStrings()));
assertFalse(B.wasCalled());
assertTrue(C.mActionCalled);
B.reset();
C.reset();
}*/
/* Test Set command
*//*
public void testSet1() throws Exception {
HandlerTest A = new HandlerTest(1, 1, 1, 0, 1);
mParser.register("+AAAA", A);
Object[] expectedResult;
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=1").toStrings()));
expectedResult = new Object[]{(Integer)1};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=1,2,3").toStrings()));
expectedResult = new Object[]{(Integer)1, (Integer)2, (Integer)3};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=3,0,0,1").toStrings()));
expectedResult = new Object[]{(Integer)3, (Integer)0, (Integer)0,
(Integer)1};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=\"foo\",1,\"b,ar").toStrings()));
expectedResult = new Object[]{"\"foo\"", 1, "\"b,ar\""};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=").toStrings()));
expectedResult = new Object[]{""};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=,").toStrings()));
expectedResult = new Object[]{"", ""};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=,,,").toStrings()));
expectedResult = new Object[]{"", "", "", ""};
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("AT+AAAA=,1,,\"foo\",").toStrings()));
expectedResult = new Object[]{"", 1, "", "\"foo\"", ""};
assertEquals(5, A.mSetArgs.length);
assertTrue(Arrays.equals(expectedResult, A.mSetArgs));
A.reset();
}*/
/* Test repeat command "A/"
*//*
public void testRepeat() throws Exception {
HandlerTest A = new HandlerTest(0, 0, 0, 0, 0);
mParser.register('A', A);
// Try repeated command on fresh parser
assertTrue(Arrays.equals(
new String[]{},
mParser.process("A/").toStrings()));
assertFalse(A.wasCalled());
A.reset();
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("ATA").toStrings()));
assertTrue(A.mBasicCalled);
assertEquals("", A.mBasicArgs);
A.reset();
// Now repeat the command
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("A/").toStrings()));
assertTrue(A.mBasicCalled);
assertEquals("", A.mBasicArgs);
A.reset();
// Multiple repeats
assertTrue(Arrays.equals(
new String[]{"OK"},
mParser.process("A/").toStrings()));
assertTrue(A.mBasicCalled);
assertEquals("", A.mBasicArgs);
A.reset();
}*/
}