+
+func (s *exportSuite) TestOnehot(c *check.C) {
+ for _, trial := range []struct {
+ incols int
+ in []uint16
+ outcols int
+ out []uint8
+ }{
+ {2, []uint16{1, 1, 1, 1}, 2, []uint8{1, 1, 1, 1}},
+ {2, []uint16{1, 1, 1, 2}, 3, []uint8{1, 1, 0, 1, 0, 1}},
+ {
+ // 2nd column => 3 one-hot columns
+ // 4th column => 0 one-hot columns
+ 4, []uint16{
+ 1, 1, 0, 0,
+ 1, 2, 1, 0,
+ 1, 3, 0, 0,
+ }, 5, []uint8{
+ 1, 1, 0, 0, 0,
+ 1, 0, 1, 0, 1,
+ 1, 0, 0, 1, 0,
+ },
+ },
+ } {
+ out, outcols := recodeOnehot(trial.in, trial.incols)
+ c.Check(out, check.DeepEquals, trial.out)
+ c.Check(outcols, check.Equals, trial.outcols)
+ }
+}