ILM_EXPORT ilmErrorTypes
ilm_initWithNativedisplay(t_ilm_nativedisplay nativedisplay)
{
    ilmErrorTypes err = ILM_SUCCESS;
    t_ilm_nativedisplay display = 0;

    init_ilmCommonPlatformTable();

    err = gIlmCommonPlatformFunc.init(nativedisplay);
    if (ILM_SUCCESS != err)
    {
        return err;
    }

    display = gIlmCommonPlatformFunc.getNativedisplay();

    err = ilmClient_init(display);
    if (ILM_SUCCESS != err)
    {
        gIlmCommonPlatformFunc.destroy();
        return err;
    }

    err = ilmControl_init(display);
    if (ILM_SUCCESS != err)
    {
        ilmClient_destroy();
        gIlmCommonPlatformFunc.destroy();
        return err;
    }

    return ILM_SUCCESS;
}
    void SetUp()
    {
        ASSERT_EQ(ILM_SUCCESS, ilm_initWithNativedisplay((t_ilm_nativedisplay)wlDisplay));
        ASSERT_EQ(ILM_SUCCESS, ilmClient_init((t_ilm_nativedisplay)wlDisplay));

        // set default values
        callbackLayerId = -1;
        LayerProperties = ilmLayerProperties();
        mask = static_cast<t_ilm_notification_mask>(0);
        surface = -1;
        SurfaceProperties = ilmSurfaceProperties();
        // create a layer
        layer = 345;
        ilm_layerRemove(layer);
        ilm_commitChanges();
        ilm_layerCreateWithDimension(&layer, 800, 480);
        ilm_commitChanges();
        // create a surface
        surface = 456;
        ilm_surfaceRemove(surface);
        ilm_commitChanges();
        ilm_surfaceCreate((t_ilm_nativehandle)wlSurfaces[0],10,10,ILM_PIXELFORMAT_RGBA_8888,&surface);
        ilm_commitChanges();
        timesCalled=0;

        callbackLayerId = INVALID_ID;
        callbackSurfaceId = INVALID_ID;
    }