Package nl.lxtreme.ols.tool.asm45

Source Code of nl.lxtreme.ols.tool.asm45.Asm45AnalyserWorkerContentTest

/*
* OpenBench LogicSniffer / SUMP project
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
*
*
* Copyright (C) 2010-2011 J.W. Janssen, www.lxtreme.nl
*/
package nl.lxtreme.ols.tool.asm45;


import static org.junit.Assert.*;

import java.net.*;
import java.util.*;

import nl.lxtreme.ols.api.acquisition.*;
import nl.lxtreme.ols.api.data.annotation.AnnotationListener;
import nl.lxtreme.ols.api.tools.*;
import nl.lxtreme.ols.test.*;
import nl.lxtreme.ols.test.data.*;

import org.junit.*;
import org.mockito.*;


/**
* Tests the decoding of instructions/data transfers works correctly.
*
* @author Ansgar Kueckes
*/
public class Asm45AnalyserWorkerContentTest
{
  // METHODS

  /**
   * @param aDataSet
   * @param aExpectedAddress
   * @return
   */
  private static void assertAddress( final Asm45DataSet aDataSet, final int... aExpectedAddress )
  {
    final Iterator<Asm45Data> dataIter = aDataSet.getData().iterator();

    int i = 0;
    while ( dataIter.hasNext() && ( i < aExpectedAddress.length ) )
    {
      final Asm45Data data = dataIter.next();
      assertEquals( "Address at index " + i + " not equal, ", aExpectedAddress[i], data.getAddress() );
      i++;
    }
    assertEquals( "Not all events were seen?!", aExpectedAddress.length, i );
  }

  /**
   * @param aDataSet
   * @param aExpectedBlock
   * @return
   */
  private static void assertBlock( final Asm45DataSet aDataSet, final int... aExpectedBlock )
  {
    final Iterator<Asm45Data> dataIter = aDataSet.getData().iterator();

    int i = 0;
    while ( dataIter.hasNext() && ( i < aExpectedBlock.length ) )
    {
      final Asm45Data data = dataIter.next();
      assertEquals( "Block at index " + i + " not equal, ", aExpectedBlock[i], data.getBlock() );
      i++;
    }
    assertEquals( "Not all events were seen?!", aExpectedBlock.length, i );
  }

  /**
   * @param aDataSet
   * @param aExpectedValue
   * @return
   */
  private static void assertValue( final Asm45DataSet aDataSet, final int... aExpectedValue )
  {
    final Iterator<Asm45Data> dataIter = aDataSet.getData().iterator();

    int i = 0;
    while ( dataIter.hasNext() && ( i < aExpectedValue.length ) )
    {
      final Asm45Data data = dataIter.next();
      assertEquals( "Value at index " + i + " not equal, ", aExpectedValue[i], data.getValue() );
      i++;
    }
    assertEquals( "Not all values were seen?!", aExpectedValue.length, i );
  }

  /**
   * Test method for
   * {@link nl.lxtreme.ols.tool.asm45.Asm45AnalyserTask#doInBackground()}.
   */
  @Test
  public void testKopterDecodingOk() throws Exception
  {
    final Asm45DataSet result = analyseDataFile( "asm45_test.ols", 22, 23, 25, 26, 27, 29, 30 );
    assertNotNull( result );

    assertBlock( result, 0x00, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x20, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x10,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x08, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x04, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x02, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x01, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01,
        0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x2E, 0x01, 0x2E, 0x01, 0x2E, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x2E, 0x2E,
        0x01, 0x01, 0x01, 0x2E, 0x2E, 0x2E, 0x2E, 0x01, 0x01, 0x01, 0x2E, 0x2E, 0x01, 0x01, 0x01, 0x2E, 0x2E, 0x2E,
        0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E );

    assertAddress( result, 0x0000, 0x00da, 0x0040, 0x001d, 0x0041, 0x00d9, 0x6000, 0x0042, 0x0043, 0x0044, 0x0040,
        0x001d, 0x0041, 0x00d9, 0x6000, 0x0042, 0x0043, 0x0044, 0x0040, 0x001d, 0x0041, 0x00d9, 0x6000, 0x0042, 0x0043,
        0x0044, 0x0040, 0x001d, 0x0041, 0x00d9, 0x6000, 0x0042, 0x0043, 0x0044, 0x0040, 0x001d, 0x0041, 0x00d9, 0x6000,
        0x0042, 0x0043, 0x0044, 0x0040, 0x001d, 0x0041, 0x00d9, 0x6000, 0x0042, 0x0043, 0x0045, 0x000e, 0x0046, 0x001d,
        0x0047, 0x0003, 0x0048, 0xffa5, 0x0049, 0x0021, 0x004a, 0x0003, 0xff72, 0x004b, 0xffa5, 0x000d, 0x004c, 0x0021,
        0x0000, 0x004d, 0x0001, 0x004e, 0x0000, 0x004f, 0x00db, 0x0050, 0x00dc, 0x0051, 0x0000, 0x0021, 0x0022, 0x0023,
        0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x0052, 0x0001, 0x0000, 0x0021, 0x002b, 0x0022, 0x002c,
        0x0023, 0x002d, 0x0024, 0x002e, 0x0025, 0x002f, 0x0026, 0x0030, 0x0027, 0x0031, 0x0028, 0x0032, 0x0029, 0x0033,
        0x002a, 0x0034, 0x0053, 0x0001, 0x0054, 0x0000, 0x0055, 0x0056, 0x0057, 0x0000, 0x0001, 0x0001, 0x0000, 0x0058,
        0x0059, 0xff73, 0x005a, 0xff73, 0x005b, 0x0000, 0x005c, 0x0001, 0x005d, 0x0000, 0x005e, 0x005f, 0x0060, 0x0061,
        0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x00dd, 0x006d, 0x0000,
        0x0000, 0x006e, 0x0000, 0x0000, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
        0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
        0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
        0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x004d, 0x009c, 0x004d, 0x009d, 0x009e, 0x009f, 0x00a0, 0x00a1,
        0x00dc, 0x00a2, 0x000e, 0x00a3, 0x0000, 0x002a, 0x00a4, 0x0001, 0x002b, 0x00a5, 0x0000, 0xffff, 0x00a6, 0x0001,
        0x0000, 0x00a7, 0x0000, 0x0015, 0x00a8, 0x0001, 0x0015, 0x00a9, 0x0000, 0xffff, 0x00aa, 0x0001, 0x0000, 0x7da4,
        0x00ab, 0x002b, 0x0000, 0x00ac, 0x002a, 0x0001, 0x00ad, 0x0000, 0x0000, 0x00ae, 0xffff, 0x0001, 0x00af, 0x0015,
        0x0000, 0x00b0, 0x0015, 0x0001, 0x00b1, 0x0000, 0x0000, 0x00b2, 0xffff, 0x0001, 0x00b3, 0x00b4, 0x00b5, 0x00b6,
        0x00b7, 0x00de, 0x00b8, 0x00df, 0x00b9, 0x0001, 0x0000, 0x0035, 0xfff8, 0x0036, 0xfff9, 0x0037, 0xfffa, 0x0038,
        0xfffb, 0x00ba, 0x00e0, 0x00bb, 0x0001, 0x0000, 0x0035, 0x0010, 0x0036, 0x0011, 0x0037, 0x0012, 0x0038, 0x0013,
        0x00bc, 0x0001, 0x0000, 0x0000, 0x00bd, 0x0001, 0x0000, 0x0000, 0x00be, 0x0000, 0x0000, 0x00bf, 0xfffb, 0xfffa,
        0xfff9, 0xfff9, 0xfffa, 0xfffb, 0x0000, 0x00c0, 0x0001, 0x00c1, 0xfffb, 0xfffb, 0xfffa, 0xfffa, 0xfff9, 0xfff9,
        0x00c2, 0x00c3, 0xfffb, 0xfffa, 0xfff9, 0x00c4, 0x0001, 0x00c5, 0x0001, 0xfffb, 0xfffa, 0xfff9, 0x0000, 0x00c6,
        0xfffb, 0xfffa, 0xfff9, 0x0001, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0,
        0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0000, 0x00d5, 0x00d6, 0x0000, 0x0000, 0x00d7 );

    assertValue( result, 0x049b, 0x0020, 0x301d, 0x0020, 0x8c98, 0x6000, 0x0000, 0xf140, 0x7502, 0x6ffc, 0x301d,
        0x0010, 0x8c98, 0x6000, 0x0000, 0xf140, 0x7502, 0x6ffc, 0x301d, 0x0008, 0x8c98, 0x6000, 0x0000, 0xf140, 0x7502,
        0x6ffc, 0x301d, 0x0004, 0x8c98, 0x6000, 0x0000, 0xf140, 0x7502, 0x6ffc, 0x301d, 0x0002, 0x8c98, 0x6000, 0x0000,
        0xf140, 0x7502, 0x6ffc, 0x301d, 0x0001, 0x8c98, 0x6000, 0x0000, 0xf140, 0x7502, 0x000e, 0x002e, 0x301d, 0x002e,
        0x0003, 0xff72, 0x03a5, 0x000d, 0x07d8, 0x0000, 0x8003, 0xff72, 0xd926, 0x83a5, 0x000d, 0xffff, 0x87d5, 0x0000,
        0xffff, 0x3001, 0xffff, 0x3800, 0xffff, 0x048c, 0x0021, 0x0c8c, 0x002b, 0x7389, 0x0021, 0x0000, 0x0000, 0x0000,
        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7309, 0x002b, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000,
        0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
        0x0000, 0x0000, 0x2001, 0x002b, 0x2800, 0x004c, 0xf020, 0xf820, 0x7b8f, 0xffb4, 0xff89, 0x0000, 0x2354, 0x6c01,
        0x4401, 0x0059, 0xf082, 0x0059, 0x0800, 0x2354, 0x1001, 0x2354, 0x1800, 0x2354, 0x7501, 0x7d01, 0x7401, 0x7c01,
        0x7541, 0x7d41, 0x7441, 0x7c41, 0x7dc1, 0x7cc1, 0x7581, 0x7481, 0x7d81, 0x7c81, 0x0471, 0x000a, 0x4800, 0x000a,
        0x000b, 0x5800, 0x000b, 0x000a, 0xf401, 0xf4c1, 0xf481, 0xfc01, 0xfcc1, 0xfc81, 0xf501, 0xf5c1, 0xf581, 0xfd01,
        0xfd81, 0x7601, 0x76c1, 0x7681, 0x7e01, 0x7ec1, 0x7e81, 0x7701, 0x77c1, 0x7781, 0x7f01, 0x7fc1, 0x7f81, 0xf701,
        0xf7c1, 0xf781, 0xf601, 0xf6c1, 0xf681, 0xff01, 0xffc1, 0xff81, 0xfe01, 0xfec1, 0xfe81, 0xf142, 0xf942, 0xf182,
        0xf982, 0xf102, 0xf902, 0xf1c2, 0xf9c2, 0x57b2, 0x3001, 0x67b1, 0x3001, 0xf060, 0xf860, 0xf14f, 0xf94f, 0x043b,
        0x002b, 0x300e, 0x002b, 0x71e0, 0x002b, 0x002b, 0x7161, 0x0000, 0x0000, 0x71e8, 0x002b, 0x002b, 0x7169, 0x0000,
        0x0000, 0x79e0, 0x0000, 0x0000, 0x7961, 0x0000, 0x0000, 0x79e8, 0x0000, 0x0000, 0x7969, 0x0000, 0x0000, 0x80c1,
        0x71f0, 0x0000, 0x0000, 0x7171, 0x002b, 0x002b, 0x71f8, 0x0000, 0x0000, 0x7179, 0x0000, 0x0000, 0x79f0, 0x0000,
        0x0000, 0x7971, 0x0000, 0x0000, 0x79f8, 0x0000, 0x0000, 0x7979, 0x0000, 0x0000, 0x7148, 0x7158, 0x7140, 0x7150,
        0x0427, 0x0035, 0x0c27, 0xfff8, 0x7303, 0xfff8, 0x0035, 0x0000, 0x0000, 0x1000, 0x1000, 0x0000, 0x0000, 0x0000,
        0x0000, 0x0c26, 0x0010, 0x7303, 0x0010, 0x0035, 0x0000, 0x0000, 0x1000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000,
        0x7b00, 0x0010, 0x0035, 0x0005, 0x7b40, 0x0010, 0x0005, 0x0005, 0x7b61, 0x0005, 0x0001, 0x7b21, 0x0000, 0x0000,
        0x1000, 0x0100, 0x0000, 0x0000, 0x0000, 0x7340, 0x000b, 0x7260, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x9900,
        0x7220, 0x7280, 0x0000, 0x0000, 0x9900, 0x7200, 0x000b, 0x7a00, 0x000b, 0x0000, 0x0000, 0x9900, 0x000b, 0x7a21,
        0x0000, 0x0000, 0x9900, 0x0000, 0x73c0, 0x74c1, 0x75c1, 0x7481, 0x7581, 0x7c81, 0x7d81, 0x7118, 0x7110, 0x7100,
        0x7108, 0x7120, 0x7138, 0x0000, 0x000b, 0xf14f, 0x7000, 0x0000, 0x0000, 0xf081 );
  }

  /**
   * Analyzes the data file identified by the given resource name.
   *
   * @param aResourceName
   *          the name of the resource (= data file) to analyse, cannot be
   *          <code>null</code>.
   * @return the analysis results, never <code>null</code>.
   * @throws Exception
   *           in case of exceptions.
   */
  private Asm45DataSet analyseDataFile( final String aResourceName, final int aLineSMCIndex, final int aLineSTMIndex,
      final int aLineEBGIndex, final int aLineBYTEIndex, final int aLineBLIndex, final int aLineWRTIndex,
      final int aLineSYNCIndex ) throws Exception
  {
    URL resource = ResourceUtils.getResource( getClass(), aResourceName );
    AcquisitionResult container = DataTestUtils.getCapturedData( resource );
    ToolContext toolContext = DataTestUtils.createToolContext( container );

    ToolProgressListener toolProgressListener = Mockito.mock( ToolProgressListener.class );
    AnnotationListener annotationListener = Mockito.mock( AnnotationListener.class );

    Asm45AnalyserTask worker = new Asm45AnalyserTask( toolContext, toolProgressListener, annotationListener );
    worker.setLineSMCIndex( aLineSMCIndex );
    worker.setLineSTMIndex( aLineSTMIndex );
    worker.setLineEBGIndex( aLineEBGIndex );
    worker.setLineBYTEIndex( aLineBYTEIndex );
    worker.setLineBLIndex( aLineBLIndex );
    worker.setLineWRTIndex( aLineWRTIndex );
    worker.setLineSYNCIndex( aLineSYNCIndex );
    worker.setReportInst( true );
    worker.setReportData( true );
    worker.setReportBusGrants( true );

    // Simulate we're running in a separate thread by directly calling the main
    // working routine...
    Asm45DataSet result = worker.call();
    assertNotNull( result );

    return result;
  }
}
TOP

Related Classes of nl.lxtreme.ols.tool.asm45.Asm45AnalyserWorkerContentTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.