// Path: src/main/java/waveview/wavedata/BitValue.java
// public enum BitValue {
//     ZERO,
//     ONE,
//     X,
//     Z;
// 
//     private static final BitValue[] ORDINAL_TABLE = BitValue.values();
// 
//     public static BitValue fromChar(char c) {
//         switch (c) {
//             case '0':
//                 return ZERO;
//             case '1':
//                 return ONE;
//             case 'x':
//             case 'X':
//                 return X;
//             case 'z':
//             case 'Z':
//                 return Z;
//             default:
//                 throw new NumberFormatException("unknown digit " + c);
//         }
//     }
// 
//     public char toChar() {
//         switch (this) {
//             case ZERO:
//                 return '0';
//             case ONE:
//                 return '1';
//             case X:
//                 return 'x';
//             case Z:
//                 return 'z';
//         }
// 
//         return ' '; // Unreachable?
//     }
// 
//     public static BitValue fromInt(int i) {
//         if (i == 0) {
//             return ZERO;
//         } else {
//             return ONE;
//         }
//     }
// 
//     public int toInt() {
//         return (this == ONE) ? 1 : 0;
//     }
// 
//     public static BitValue fromOrdinal(int ord) {
//         return ORDINAL_TABLE[ord];
//     }
// 
//     public BitValue invert() {
//         switch (this) {
//             case ZERO:
//                 return ONE;
//             case ONE:
//                 return ZERO;
//             case X:
//                 return X;
//             case Z:
//                 return X;
//             default:
//                 return X;   // Shouldn't happen
//         }
//     }
// 
//     public int compare(BitValue other) {
//         if (this == ONE && other == ZERO) {
//             return 1;
//         } else if (this == ZERO && other == ONE) {
//             return -1;
//         } else {
//             // Either these are equal, or there is an X and Z, which match
//             // everything.
//             return 0;
//         }
//     }
// }


import static org.junit.Assert.assertEquals;
import org.junit.Test;
import waveview.wavedata.BitValue;
//
// Copyright 2016 Jeff Bush
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//



public class BitValueTest {
    @Test
    public void fromChar() {
        assertEquals(BitValue.ZERO, BitValue.fromChar('0'));
        assertEquals(BitValue.ONE, BitValue.fromChar('1'));
        assertEquals(BitValue.X, BitValue.fromChar('x'));
        assertEquals(BitValue.X, BitValue.fromChar('X'));
        assertEquals(BitValue.Z, BitValue.fromChar('z'));
        assertEquals(BitValue.Z, BitValue.fromChar('Z'));
    }

    @Test
    public void toChar() {
        assertEquals('0', BitValue.ZERO.toChar());
        assertEquals('1', BitValue.ONE.toChar());
        assertEquals('x', BitValue.X.toChar());
        assertEquals('z', BitValue.Z.toChar());
    }

    @Test
    public void fromInt() {
        assertEquals(BitValue.ZERO, BitValue.fromInt(0));
        assertEquals(BitValue.ONE, BitValue.fromInt(1));
        assertEquals(BitValue.ONE, BitValue.fromInt(213));
    }

    @Test
    public void toInt() {
// Path: src/main/java/waveview/wavedata/BitValue.java
// public enum BitValue {
//     ZERO,
//     ONE,
//     X,
//     Z;
// 
//     private static final BitValue[] ORDINAL_TABLE = BitValue.values();
// 
//     public static BitValue fromChar(char c) {
//         switch (c) {
//             case '0':
//                 return ZERO;
//             case '1':
//                 return ONE;
//             case 'x':
//             case 'X':
//                 return X;
//             case 'z':
//             case 'Z':
//                 return Z;
//             default:
//                 throw new NumberFormatException("unknown digit " + c);
//         }
//     }
// 
//     public char toChar() {
//         switch (this) {
//             case ZERO:
//                 return '0';
//             case ONE:
//                 return '1';
//             case X:
//                 return 'x';
//             case Z:
//                 return 'z';
//         }
// 
//         return ' '; // Unreachable?
//     }
// 
//     public static BitValue fromInt(int i) {
//         if (i == 0) {
//             return ZERO;
//         } else {
//             return ONE;
//         }
//     }
// 
//     public int toInt() {
//         return (this == ONE) ? 1 : 0;
//     }
// 
//     public static BitValue fromOrdinal(int ord) {
//         return ORDINAL_TABLE[ord];
//     }
// 
//     public BitValue invert() {
//         switch (this) {
//             case ZERO:
//                 return ONE;
//             case ONE:
//                 return ZERO;
//             case X:
//                 return X;
//             case Z:
//                 return X;
//             default:
//                 return X;   // Shouldn't happen
//         }
//     }
// 
//     public int compare(BitValue other) {
//         if (this == ONE && other == ZERO) {
//             return 1;
//         } else if (this == ZERO && other == ONE) {
//             return -1;
//         } else {
//             // Either these are equal, or there is an X and Z, which match
//             // everything.
//             return 0;
//         }
//     }
// }


// Path: src/test/java/BitValueTest.java
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import waveview.wavedata.BitValue;

//
// Copyright 2016 Jeff Bush
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//



public class BitValueTest {
    @Test
    public void fromChar() {
        assertEquals(BitValue.ZERO, BitValue.fromChar('0'));
        assertEquals(BitValue.ONE, BitValue.fromChar('1'));
        assertEquals(BitValue.X, BitValue.fromChar('x'));
        assertEquals(BitValue.X, BitValue.fromChar('X'));
        assertEquals(BitValue.Z, BitValue.fromChar('z'));
        assertEquals(BitValue.Z, BitValue.fromChar('Z'));
    }

    @Test
    public void toChar() {
        assertEquals('0', BitValue.ZERO.toChar());
        assertEquals('1', BitValue.ONE.toChar());
        assertEquals('x', BitValue.X.toChar());
        assertEquals('z', BitValue.Z.toChar());
    }

    @Test
    public void fromInt() {
        assertEquals(BitValue.ZERO, BitValue.fromInt(0));
        assertEquals(BitValue.ONE, BitValue.fromInt(1));
        assertEquals(BitValue.ONE, BitValue.fromInt(213));
    }

    @Test
    public void toInt() {
        assertEquals(1, BitValue.ONE.toInt());