@Test
  public void testStepModel() {

    StepModel smodel = new StepModel();
    smodel.setStart(0);
    smodel.setStop(10);
    smodel.setStep(1);
    smodel.setName("fred");

    assertEquals( // Concise.
        "step('fred', 0.0, 10.0, 1.0)", pyExpress(smodel, false));
    assertEquals( // Verbose.
        "step(axis='fred', start=0.0, stop=10.0, step=1.0)", pyExpress(smodel, true));
  }
  @Test
  public void testCompoundScanRequest() throws Exception {

    StepModel smodel = new StepModel();
    smodel.setStart(0);
    smodel.setStop(10);
    smodel.setStep(1);
    smodel.setName("fred");

    ArrayModel amodel = new ArrayModel();
    amodel.setName("fred");
    amodel.setPositions(0.1);

    ScanRequest<IROI> request = new ScanRequest<>();
    request.setCompoundModel(new CompoundModel(smodel, amodel));

    assertEquals( // Concise.
        "mscan([step('fred', 0.0, 10.0, 1.0), val('fred', 0.1)])", pyExpress(request, false));
    assertEquals( // Verbose.
        "mscan(path=[step(axis='fred', start=0.0, stop=10.0, step=1.0), array(axis='fred', values=[0.1])])",
        pyExpress(request, true));
  }
  @Test
  public void testScanRequestWithMonitor() throws Exception {

    StepModel smodel = new StepModel();
    smodel.setStart(0);
    smodel.setStop(10);
    smodel.setStep(1);
    smodel.setName("fred");

    Collection<String> monitors = new ArrayList<>();
    monitors.add("someMonitor");

    ScanRequest<IROI> request = new ScanRequest<>();
    request.setCompoundModel(new CompoundModel(smodel));
    request.setMonitorNames(monitors);

    assertEquals( // Concise.
        "mscan(step('fred', 0.0, 10.0, 1.0), 'someMonitor')", pyExpress(request, false));
    assertEquals( // Verbose.
        "mscan(path=[step(axis='fred', start=0.0, stop=10.0, step=1.0)], mon=['someMonitor'])",
        pyExpress(request, true));
  }