package org.envirocar.obd.adapter.async;
import android.test.InstrumentationTestCase;
import android.util.Base64;
import org.envirocar.obd.commands.PID;
import org.envirocar.obd.commands.response.DataResponse;
import org.envirocar.obd.commands.response.entity.EngineRPMResponse;
import org.envirocar.obd.commands.response.entity.LambdaProbeVoltageResponse;
import org.envirocar.obd.exception.AdapterSearchingException;
import org.envirocar.obd.exception.InvalidCommandResponseException;
import org.envirocar.obd.exception.NoDataReceivedException;
import org.envirocar.obd.exception.UnmatchedResponseException;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.Test;
public class DriveDeckParserTest extends InstrumentationTestCase {
@Test
public void testSpeedParsing() throws InvalidCommandResponseException, NoDataReceivedException, UnmatchedResponseException, AdapterSearchingException {
byte[] bytes = new byte[]{66, 52, 49, 60, (byte) 77, (byte) 0, 60, 0, 0, 32, 32};
DriveDeckSportAdapter dd = new DriveDeckSportAdapter();
DataResponse resp = dd.processResponse(bytes);
Assert.assertThat(resp.getPid(), CoreMatchers.is(PID.SPEED));
Assert.assertThat(resp.getValue(), CoreMatchers.is(77));
}
@Test
public void testLambdaParsing() throws InvalidCommandResponseException, NoDataReceivedException, UnmatchedResponseException, AdapterSearchingException {
byte[] decode = Base64.decode("QjREPH+dPAAAPFzy", Base64.DEFAULT);
DriveDeckSportAdapter dd = new DriveDeckSportAdapter();
DataResponse resp = dd.processResponse(decode);
Assert.assertThat(resp, CoreMatchers.instanceOf(LambdaProbeVoltageResponse.class));
}
@Test
public void testPIDSupportedParsing() throws InvalidCommandResponseException, NoDataReceivedException, UnmatchedResponseException, AdapterSearchingException {
byte[] decode = Base64.decode("QjcwN0U4MDA8mDs8oBM=", Base64.DEFAULT);
DriveDeckSportAdapter driveDeckSportAdapter = new DriveDeckSportAdapter();
driveDeckSportAdapter.processResponse(decode);
Assert.assertThat(driveDeckSportAdapter.getSupportedPIDs().size(), CoreMatchers.not(0));
}
@Test
public void testRPMSpecialCaseParsing() throws InvalidCommandResponseException, NoDataReceivedException, UnmatchedResponseException, AdapterSearchingException {
byte[] decode = Base64.decode("QjUxPAAQPAwYPAAAPF0u", Base64.DEFAULT);
DriveDeckSportAdapter dd = new DriveDeckSportAdapter();
DataResponse resp = dd.processResponse(decode);
Assert.assertThat(resp, CoreMatchers.instanceOf(EngineRPMResponse.class));
Assert.assertThat(resp.getValue(), CoreMatchers.is(774));
}
}