/* DESCRIPTION cabac_test.go provides testing for functionality found in cabac.go. AUTHORS Saxon A. Nelson-Milton Shawn Smith LICENSE Copyright (C) 2019 the Australian Ocean Lab (AusOcean). It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License in gpl.txt. If not, see http://www.gnu.org/licenses. */ package h264dec import ( "testing" ) var ctxIdxTests = []struct { binIdx int maxBinIdxCtx int ctxIdxOffset int want int }{ {0, 0, 0, 10000}, {999, 0, 0, 10000}, {0, 0, 3, 10000}, {1, 0, 3, 276}, {2, 0, 3, 3}, {3, 0, 3, 4}, {4, 0, 3, 10000}, {5, 0, 3, 10000}, {999, 0, 3, 7}, {0, 0, 11, 10000}, {999, 0, 11, 10000}, {0, 0, 14, 0}, {1, 0, 14, 1}, {2, 0, 14, 10000}, {999, 0, 14, 10000}, {0, 0, 17, 0}, {1, 0, 17, 276}, {2, 0, 17, 1}, {3, 0, 17, 2}, {4, 0, 17, 10000}, {999, 0, 17, 3}, {0, 0, 21, 0}, {1, 0, 21, 1}, {2, 0, 21, 2}, {999, 0, 21, 10000}, {0, 0, 24, 10000}, {999, 0, 24, 10000}, {0, 0, 27, 10000}, {1, 0, 27, 3}, {2, 0, 27, 10000}, {999, 0, 27, 5}, {0, 0, 32, 0}, {1, 0, 32, 276}, {2, 0, 32, 1}, {3, 0, 32, 2}, {4, 0, 32, 10000}, {999, 0, 32, 3}, {0, 0, 36, 0}, {1, 0, 36, 1}, {2, 0, 36, 10000}, {3, 0, 36, 3}, {4, 0, 36, 3}, {5, 0, 36, 3}, {0, 0, 40, 10000}, {0, 0, 47, 10000}, {1, 0, 47, 3}, {2, 0, 47, 4}, {3, 0, 47, 5}, {999, 0, 47, 6}, {0, 0, 54, 10000}, {1, 0, 54, 4}, {999, 0, 54, 5}, {0, 0, 60, 10000}, {1, 0, 60, 2}, {999, 0, 60, 3}, {0, 0, 64, 10000}, {1, 0, 64, 3}, {2, 0, 64, 3}, {999, 0, 64, 10000}, {0, 0, 68, 0}, {999, 0, 68, 10000}, {0, 0, 69, 0}, {1, 0, 69, 0}, {2, 0, 69, 0}, {0, 0, 70, 10000}, {999, 0, 70, 10000}, {0, 0, 73, 10000}, {1, 0, 73, 10000}, {2, 0, 73, 10000}, {3, 0, 73, 10000}, {4, 0, 73, 10000}, {999, 0, 73, 10000}, {0, 0, 77, 10000}, {1, 0, 77, 10000}, {999, 0, 77, 10000}, {0, 0, 276, 0}, {999, 0, 276, 10000}, {0, 0, 399, 10000}, {999, 0, 399, 10000}, } // TestCtxIdx tests that the CtxIdx function returns the correct // value given binIdx and ctxIdxOffset. func TestCtxIdx(t *testing.T) { for _, tt := range ctxIdxTests { if got := CtxIdx(tt.binIdx, tt.maxBinIdxCtx, tt.ctxIdxOffset); got != tt.want { t.Errorf("CtxIdx(%d, %d, %d) = %d, want %d", tt.binIdx, tt.maxBinIdxCtx, tt.ctxIdxOffset, got, tt.want) } } }