Model { public static Builder builder() { return emptyBuilder() .addIntentDataResolver(new AutoIntentData.Scanner()) .addSlotTypeDataResolver(new AutoSlotTypeData.Scanner()); } Model(Map<String, IntentDefinition> intentDefinitions,
                 Map<String, SlotTypeDefinition> slotTypes,
                 Set<IntentDataResolver> intentDataResolvers,
                 Set<SlotTypeDataResolver> slotTypeDataResolvers,
                 Map<IntentDefinition, Set<IntentDataSource>> intentDataSources,
                 Map<SlotTypeDefinition, Set<SlotTypeDataSource>> slotTypeDataSources); Map<String, IntentDefinition> getIntentDefinitions(); Map<String, SlotTypeDefinition> getSlotTypes(); Set<IntentDataResolver> getIntentDataResolvers(); Set<SlotTypeDataResolver> getSlotTypeDataResolvers(); Map<IntentDefinition, Set<IntentDataSource>> getIntentDataSources(); Map<SlotTypeDefinition, Set<SlotTypeDataSource>> getSlotTypeDataSources(); static Model empty(); static Builder builder(); static Builder emptyBuilder();  }
@Test(expected = IllegalArgumentException.class) public void testDuplicateSlotTypes() { Model.Builder builder = Model.builder(); builder.slotType(DuplicateSlot1.class); builder.slotType(DuplicateSlot2.class); }
@Test(expected = IllegalArgumentException.class) public void testUnsupportedSlotType() { Model.builder().intent(TestIntentUnsupportedType.class); }
@Test(expected = IllegalArgumentException.class) public void testDuplicateSlots() { Model.builder().intent(TestDuplicateSlots.class); }
@Test(expected = IllegalArgumentException.class) public void testMissingIntentAnnotation() { Model.builder().intent(TestMissingAnnotation.class); }
@Test(expected = IllegalArgumentException.class) public void testMissingSlotAnnotation() { Model.builder().slotType(TestMissingAnnotation.class); }