@Test
public void ShouldRegisterStrategiesForStandardTypes() throws Exception {

    BootstrapItem bootstrapItem = mock(BootstrapItem.class);
    whenNew(BootstrapItem.class).withArguments("ResolveStandardTypesStrategiesPlugin").thenReturn(bootstrapItem);
    when(bootstrapItem.after(anyString())).thenReturn(bootstrapItem);
    plugin.load();
    verifyNew(BootstrapItem.class).withArguments("ResolveStandardTypesStrategiesPlugin");
    verify(bootstrapItem).after("IOC");
    ArgumentCaptor<IPoorAction> actionArgumentCaptor = ArgumentCaptor.forClass(IPoorAction.class);
    verify(bootstrapItem).process(actionArgumentCaptor.capture());
    IKey stringConvertKey = mock(IKey.class);
    when(Keys.getOrAdd(String.class.getCanonicalName() + "convert")).thenReturn(stringConvertKey);
    IKey integerConvertKey = mock(IKey.class);
    when(Keys.getOrAdd(Integer.class.getCanonicalName() + "convert")).thenReturn(integerConvertKey);
    IKey bigDecimalConvertKey = mock(IKey.class);
    when(Keys.getOrAdd(BigDecimal.class.getCanonicalName() + "convert")).thenReturn(bigDecimalConvertKey);
    IKey localDateTimeConvertKey = mock(IKey.class);
    when(Keys.getOrAdd(LocalDateTime.class.getCanonicalName() + "convert")).thenReturn(localDateTimeConvertKey);
    IKey listConvertKey = mock(IKey.class);
    when(Keys.getOrAdd(List.class.getCanonicalName() + "convert")).thenReturn(listConvertKey);
    verify(bootstrap).add(eq(bootstrapItem));
    actionArgumentCaptor.getValue().execute();
    verifyStatic();
    Keys.getOrAdd(String.class.getCanonicalName() + "convert");
    verifyStatic();
    Keys.getOrAdd(Integer.class.getCanonicalName() + "convert");
    verifyStatic();
    Keys.getOrAdd(BigDecimal.class.getCanonicalName() + "convert");
    verifyStatic();
    Keys.getOrAdd(LocalDateTime.class.getCanonicalName() + "convert");
    verifyStatic();
    Keys.getOrAdd(List.class.getCanonicalName() + "convert");
    verifyStatic();
    IOC.register(eq(stringConvertKey), any(IResolveDependencyStrategy.class));
    verifyStatic();
    IOC.register(eq(integerConvertKey), any(IResolveDependencyStrategy.class));
    verifyStatic();
    IOC.register(eq(bigDecimalConvertKey), any(IResolveDependencyStrategy.class));
    verifyStatic();
    IOC.register(eq(localDateTimeConvertKey), any(IResolveDependencyStrategy.class));
    verifyStatic();
    IOC.register(eq(listConvertKey), any(IResolveDependencyStrategy.class));
}