Changeset 31500 in osm for applications/editors


Ignore:
Timestamp:
2015-08-15T12:30:24+02:00 (9 years ago)
Author:
nokutu
Message:

More tests for history record system.

Location:
applications/editors/josm/plugins/mapillary
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java

    r31490 r31500  
    6767
    6868  /**
    69    * Removes an image from the database.
    70    *
    71    * @param image
     69   * Removes an image from the database. From the ArrayList in this object and
     70   * from its {@link MapillarySequence}.
     71   *
     72   * @param image
     73   *          The {@link MapillaryAbstractImage} that is going to be deleted.
    7274   */
    7375  public synchronized void remove(MapillaryAbstractImage image) {
    74     if (MapillaryMainDialog.getInstance().getImage() != null) {
     76    if (Main.main != null
     77        && MapillaryMainDialog.getInstance().getImage() != null) {
    7578      MapillaryMainDialog.getInstance().setImage(null);
    7679      MapillaryMainDialog.getInstance().updateImage();
     
    8891   *
    8992   * @param images
     93   *          The set of {@link MapillaryAbstractImage} objects that are going
     94   *          to be removed.
    9095   */
    9196  public synchronized void remove(List<MapillaryAbstractImage> images) {
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandDelete.java

    r31490 r31500  
    1010
    1111/**
     12 * Command used to delete a set of images.
     13 *
    1214 * @author nokutu
    1315 *
     
    1820
    1921  /**
     22   * Main constructor.
     23   *
    2024   * @param images
     25   *          The set of images that are going to be deleted.
    2126   */
    2227  public CommandDelete(List<MapillaryAbstractImage> images) {
     
    2732  @Override
    2833  public void sum(MapillaryCommand command) {
    29     // Ignored
    3034  }
    3135
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandImport.java

    r31491 r31500  
    2222   *
    2323   * @param images
     24   *          The set of images that are going to be added. Might be in the same
     25   *          sequence or not.
    2426   */
    2527  public CommandImport(List<MapillaryAbstractImage> images) {
     
    4749  @Override
    4850  public void sum(MapillaryCommand command) {
    49     // IGNORE
    5051  }
    5152
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandJoin.java

    r31490 r31500  
    66
    77import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    8 import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
    98import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
    109
     
    2120   *
    2221   * @param images
     22   *          The two images that are going to be joined. Must be of exactly
     23   *          size 2. The first one joins to the second one.
     24   * @throws IllegalArgumentException
     25   *           if the List size is different from 2.
    2326   */
    2427  public CommandJoin(List<MapillaryAbstractImage> images) {
    2528    super(images);
     29    if (images.size() != 2)
     30      throw new IllegalArgumentException();
    2631  }
    2732
     
    3338  @Override
    3439  public void undo() {
    35     MapillaryUtils.unjoin((MapillaryImportedImage) this.images.get(0),
    36         (MapillaryImportedImage) this.images.get(1));
     40    MapillaryUtils.unjoin(this.images.get(0), this.images.get(1));
    3741  }
    3842
    3943  @Override
    4044  public void redo() {
    41     MapillaryUtils.join((MapillaryImportedImage) this.images.get(0),
    42         (MapillaryImportedImage) this.images.get(1));
     45    MapillaryUtils.join(this.images.get(0), this.images.get(1));
    4346  }
    4447
    4548  @Override
    4649  public void sum(MapillaryCommand command) {
    47     // TODO Auto-generated method stub
    48 
    4950  }
    5051
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/CommandUnjoin.java

    r31490 r31500  
    66
    77import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    8 import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
    98import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
    109
     
    2120   *
    2221   * @param images
     22   *          The two images that are going to be unjoined. Must be of exactly
     23   *          size 2.
     24   * @throws IllegalArgumentException
     25   *           if the List size is different from 2.
    2326   */
    2427  public CommandUnjoin(List<MapillaryAbstractImage> images) {
    2528    super(images);
     29    if (images.size() != 2)
     30      throw new IllegalArgumentException();
    2631  }
    2732
     
    3338  @Override
    3439  public void undo() {
    35     MapillaryUtils.join((MapillaryImportedImage) this.images.get(0),
    36         (MapillaryImportedImage) this.images.get(1));
     40    MapillaryUtils.join(this.images.get(0), this.images.get(1));
    3741  }
    3842
    3943  @Override
    4044  public void redo() {
    41     MapillaryUtils.unjoin((MapillaryImportedImage) this.images.get(0),
    42         (MapillaryImportedImage) this.images.get(1));
     45    MapillaryUtils.unjoin(this.images.get(0), this.images.get(1));
    4346  }
    4447
    4548  @Override
    4649  public void sum(MapillaryCommand command) {
    47     // IGNORE
    4850  }
    4951
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/commands/MapillaryExecutableCommand.java

    r31490 r31500  
    1717   *
    1818   * @param images
     19   *          The set of images affected by the command.
    1920   */
    2021  public MapillaryExecutableCommand(List<MapillaryAbstractImage> images) {
     
    2324
    2425  /**
    25    * Executes the command.
     26   * Executes the command. It is run when the command is added to the history
     27   * record.
    2628   */
    2729  public abstract void execute();
  • applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/utils/MapillaryUtils.java

    r31495 r31500  
    1919import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
    2020import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
    21 import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
    2221import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
    2322import org.openstreetmap.josm.plugins.mapillary.MapillarySequence;
     
    137136   * Joins two images into the same sequence.
    138137   *
    139    * @param img1
    140    * @param img2
    141    */
    142   public synchronized static void join(MapillaryImportedImage img1,
    143       MapillaryImportedImage img2) {
    144     MapillaryImportedImage firstImage = img1;
    145     MapillaryImportedImage secondImage = img2;
    146 
    147     if (img1.next() != null) {
    148       firstImage = img2;
    149       secondImage = img1;
     138   * @param mapillaryAbstractImage
     139   * @param mapillaryAbstractImage2
     140   */
     141  public synchronized static void join(MapillaryAbstractImage mapillaryAbstractImage,
     142      MapillaryAbstractImage mapillaryAbstractImage2) {
     143    MapillaryAbstractImage firstImage = mapillaryAbstractImage;
     144    MapillaryAbstractImage secondImage = mapillaryAbstractImage2;
     145
     146    if (mapillaryAbstractImage.next() != null) {
     147      firstImage = mapillaryAbstractImage2;
     148      secondImage = mapillaryAbstractImage;
    150149    }
    151150    if (firstImage.getSequence() == null) {
     
    157156      MapillarySequence seq = new MapillarySequence();
    158157      seq.add(secondImage);
    159       img2.setSequence(seq);
     158      mapillaryAbstractImage2.setSequence(seq);
    160159    }
    161160
     
    171170   * Separates two images belonging to the same sequence.
    172171   *
    173    * @param img1
    174    * @param img2
    175    */
    176   public synchronized static void unjoin(MapillaryImportedImage img1,
    177       MapillaryImportedImage img2) {
    178     MapillaryImportedImage firstImage = img1;
    179     MapillaryImportedImage secondImage = img2;
    180 
    181     if (img1.next() != img2) {
    182       firstImage = img2;
    183       secondImage = img1;
     172   * @param mapillaryAbstractImage
     173   * @param mapillaryAbstractImage2
     174   */
     175  public synchronized static void unjoin(MapillaryAbstractImage mapillaryAbstractImage,
     176      MapillaryAbstractImage mapillaryAbstractImage2) {
     177    MapillaryAbstractImage firstImage = mapillaryAbstractImage;
     178    MapillaryAbstractImage secondImage = mapillaryAbstractImage2;
     179
     180    if (mapillaryAbstractImage.next() != mapillaryAbstractImage2) {
     181      firstImage = mapillaryAbstractImage2;
     182      secondImage = mapillaryAbstractImage;
    184183    }
    185184
  • applications/editors/josm/plugins/mapillary/test/unit/org/openstreetmap/josm/plugins/mapillary/history/MapillaryRecordTest.java

    r31492 r31500  
    22
    33import static org.junit.Assert.assertEquals;
     4import static org.junit.Assert.fail;
    45
    56import java.util.Arrays;
     
    910import org.openstreetmap.josm.plugins.mapillary.AbstractTest;
    1011import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
     12import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
    1113import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
     14import org.openstreetmap.josm.plugins.mapillary.MapillaryLayer;
    1215import org.openstreetmap.josm.plugins.mapillary.history.MapillaryRecord;
     16import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandDelete;
     17import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandImport;
     18import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandJoin;
    1319import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandMove;
    1420import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandTurn;
     21import org.openstreetmap.josm.plugins.mapillary.history.commands.CommandUnjoin;
    1522import org.openstreetmap.josm.plugins.mapillary.history.commands.MapillaryCommand;
    1623
     
    3845    this.img2 = new MapillaryImage("key2", 0.2, 0.2, 0.2);
    3946    this.img3 = new MapillaryImage("key3", 0.3, 0.3, 0.3);
     47    MapillaryLayer.getInstance().getData().getImages().clear();
    4048  }
    4149
     
    5563        0.1, 0.1);
    5664    MapillaryCommand cmd1 = new CommandMove(
    57         Arrays.asList(new MapillaryAbstractImage[] { this.img1 }),
    58         0.1, 0.1);
     65        Arrays.asList(new MapillaryAbstractImage[] { this.img1 }), 0.1, 0.1);
    5966    MapillaryCommand cmd31 = new CommandMove(
    6067        Arrays.asList(new MapillaryAbstractImage[] { this.img3, this.img1 }),
     
    98105
    99106  /**
    100    * Tests CommandMoveImage class.
     107   * Tests {@link CommandMove} class.
    101108   */
    102109  @Test
     
    132139
    133140  /**
    134    * Tests CommandTurnImage class.
     141   * Tests {@link CommandTurn} class.
    135142   */
    136143  @Test
     
    161168    assertEquals(0.1, this.img1.getCa(), 0.01);
    162169  }
     170
     171  /**
     172   * Tests {@link CommandJoin} class.
     173   */
     174  @Test
     175  public void commandJoinClass() {
     176    CommandJoin cmd1 = new CommandJoin(
     177        Arrays.asList(new MapillaryAbstractImage[] { this.img1, this.img2 }));
     178    CommandJoin cmd2 = new CommandJoin(
     179        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     180
     181    this.record.addCommand(cmd1);
     182    assertEquals(2, this.img1.getSequence().getImages().size());
     183    assertEquals(this.img2, this.img1.next());
     184    this.record.undo();
     185    assertEquals(1, this.img1.getSequence().getImages().size());
     186    this.record.redo();
     187    this.record.addCommand(cmd2);
     188    assertEquals(3, this.img1.getSequence().getImages().size());
     189    assertEquals(this.img3, this.img1.next().next());
     190
     191    try {
     192      this.record.addCommand(new CommandJoin(Arrays
     193          .asList(new MapillaryAbstractImage[] { this.img1, this.img2,
     194              this.img3 })));
     195      fail();
     196    } catch (IllegalArgumentException e) {
     197      // Expected output.
     198    } catch (Exception e) {
     199      fail();
     200    }
     201  }
     202
     203  /**
     204   * Tests {@link CommandUnjoin} class.
     205   */
     206  @Test
     207  public void commandUnjoinClass() {
     208    CommandJoin join1 = new CommandJoin(
     209        Arrays.asList(new MapillaryAbstractImage[] { this.img1, this.img2 }));
     210    CommandJoin join2 = new CommandJoin(
     211        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     212
     213    CommandUnjoin cmd1 = new CommandUnjoin(
     214        Arrays.asList(new MapillaryAbstractImage[] { this.img1, this.img2 }));
     215    CommandUnjoin cmd2 = new CommandUnjoin(
     216        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     217
     218    this.record.addCommand(join1);
     219    this.record.addCommand(join2);
     220
     221    this.record.addCommand(cmd1);
     222    assertEquals(1, this.img1.getSequence().getImages().size());
     223    this.record.undo();
     224    assertEquals(3, this.img1.getSequence().getImages().size());
     225    this.record.redo();
     226    this.record.addCommand(cmd2);
     227    assertEquals(1, this.img1.getSequence().getImages().size());
     228    assertEquals(1, this.img2.getSequence().getImages().size());
     229
     230    try {
     231      this.record.addCommand(new CommandUnjoin(Arrays
     232          .asList(new MapillaryAbstractImage[] { this.img1, this.img2,
     233              this.img3 })));
     234      fail();
     235    } catch (IllegalArgumentException e) {
     236      // Expected output.
     237    } catch (Exception e) {
     238      fail();
     239    }
     240  }
     241
     242  /**
     243   * Test {@link CommandDelete} class.
     244   */
     245  @Test
     246  public void commandDeleteTest() {
     247    CommandJoin join1 = new CommandJoin(
     248        Arrays.asList(new MapillaryAbstractImage[] { this.img1, this.img2 }));
     249    CommandJoin join2 = new CommandJoin(
     250        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     251
     252    CommandDelete cmd1 = new CommandDelete(
     253        Arrays.asList(new MapillaryAbstractImage[] { this.img1 }));
     254    CommandDelete cmd2 = new CommandDelete(
     255        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     256
     257    this.record.addCommand(join1);
     258    this.record.addCommand(join2);
     259
     260    MapillaryLayer
     261        .getInstance()
     262        .getData()
     263        .add(
     264            Arrays.asList(new MapillaryAbstractImage[] { this.img1, this.img2,
     265                this.img3 }));
     266
     267    this.record.addCommand(cmd1);
     268    assertEquals(false, MapillaryLayer.getInstance().getData().getImages()
     269        .contains(this.img1));
     270    assertEquals(null, this.img2.previous());
     271    this.record.undo();
     272    assertEquals(true, MapillaryLayer.getInstance().getData().getImages()
     273        .contains(this.img1));
     274    this.record.redo();
     275    this.record.addCommand(cmd2);
     276    assertEquals(0, MapillaryLayer.getInstance().getData().size());
     277  }
     278
     279  /**
     280   * Test {@link CommandImport} class.
     281   */
     282  @Test
     283  public void commandImportTest() {
     284    MapillaryData data = MapillaryLayer.getInstance().getData();
     285    data.remove(data.getImages());
     286
     287    CommandImport cmd1 = new CommandImport(
     288        Arrays.asList(new MapillaryAbstractImage[] { this.img1 }));
     289    CommandImport cmd2 = new CommandImport(
     290        Arrays.asList(new MapillaryAbstractImage[] { this.img2, this.img3 }));
     291
     292    this.record.addCommand(cmd1);
     293    assertEquals(1, data.size());
     294    this.record.undo();
     295    assertEquals(0, data.size());
     296    this.record.redo();
     297    this.record.addCommand(cmd2);
     298    assertEquals(3, data.size());
     299  }
    163300}
Note: See TracChangeset for help on using the changeset viewer.