001package beginner;
002
003import com.sandwich.koan.Koan;
004
005import static com.sandwich.koan.constant.KoanConstants.__;
006import static com.sandwich.util.Assert.assertEquals;
007
008public class AboutArithmeticOperators {
009
010    @Koan
011    public void simpleOperations() {
012        assertEquals(1, __);
013        assertEquals(1 + 1, __);
014        assertEquals(2 + 3 * 4, __);
015        assertEquals((2 + 3) * 4, __);
016        assertEquals(2 * 3 + 4, __);
017        assertEquals(2 - 3 + 4, __);
018        assertEquals(2 + 4 / 2, __);
019        assertEquals((2 + 4) / 2, __);
020    }
021
022    @Koan
023    public void notSoSimpleOperations() {
024        assertEquals(1 / 2, __);
025        assertEquals(3 / 2, __);
026        assertEquals(1 % 2, __);
027        assertEquals(3 % 2, __);
028    }
029
030    @Koan
031    public void minusMinusVariableMinusMinus() {
032        int i = 1;
033        assertEquals(--i, __);
034        assertEquals(i, __);
035        assertEquals(i--, __);
036        assertEquals(i, __);
037    }
038
039    @Koan
040    public void plusPlusVariablePlusPlus() {
041        int i = 1;
042        assertEquals(++i, __);
043        assertEquals(i, __);
044        assertEquals(i++, __);
045        assertEquals(i, __);
046    }
047
048    @Koan
049    public void timesAndDivInPlace() {
050        int i = 1;
051        i *= 2;
052        assertEquals(i, __);
053        i /= 2;
054        assertEquals(i, __);
055    }
056
057}