abstract factory test case added