I think you should test your code. For example in the web-based Hardware simulator. Then compare the truth table with the expected result and you will see that your code is not correct.
Definitely should test it against the test script. But before you do that, you should sanity check it yourself. If sel=0, which signal should survive getting through one of the And gates? Which signal does survive?