made data provider testable and added lots of tests