package org.mongodb.morphia; import org.bson.types.ObjectId; import org.junit.Assert; import org.junit.Test; import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Id; import java.util.List; public class TestModOperator extends TestBase { @Test public void mod() { getMorphia().map(Inventory.class); getDs().save(new Inventory("Flowers", 8)); getDs().save(new Inventory("Candy", 2)); getDs().save(new Inventory("Basketballs", 12)); List<Inventory> list = getDs().find(Inventory.class) .filter("quantity mod", new Integer[]{4, 0}) .order("name") .asList(); Assert.assertEquals(2, list.size()); Assert.assertEquals("Basketballs", list.get(0).name); Assert.assertEquals("Flowers", list.get(1).name); list = getDs().find(Inventory.class) .filter("quantity mod", new Integer[]{4, 2}) .order("name") .asList(); Assert.assertEquals(1, list.size()); Assert.assertEquals("Candy", list.get(0).name); list = getDs().find(Inventory.class) .filter("quantity mod", new Integer[]{6, 0}) .order("name") .asList(); Assert.assertEquals(1, list.size()); Assert.assertEquals("Basketballs", list.get(0).name); list = getDs().find(Inventory.class) .field("quantity").mod(4, 0) .order("name") .asList(); Assert.assertEquals(2, list.size()); Assert.assertEquals("Basketballs", list.get(0).name); Assert.assertEquals("Flowers", list.get(1).name); list = getDs().find(Inventory.class) .field("quantity").mod(4, 2) .order("name") .asList(); Assert.assertEquals(1, list.size()); Assert.assertEquals("Candy", list.get(0).name); list = getDs().find(Inventory.class) .field("quantity").mod(6, 0) .order("name") .asList(); Assert.assertEquals(1, list.size()); Assert.assertEquals("Basketballs", list.get(0).name); } @Entity public static class Inventory { @Id private ObjectId id; private Integer quantity; private String name; public Inventory() { } public Inventory(final String name, final Integer quantity) { this.name = name; this.quantity = quantity; } @Override public String toString() { return String.format("Inventory{quantity=%d, name='%s'}", quantity, name); } } }