Update AssertValue() implementation

Previously when the data is a collection the test framework will try to cast the expected value to a collection and iterate values in it. But if the expected value is not a collection, an exception will be thrown out. This pull request fixes this issue.

Now there are 35 test cases previous had errors now just fail. 
What a long code, I'll let you pass this time as I don't have to scroll all the way down to grab the horizontal scroll bar ;)