3232import com .android .layoutlib .bridge .intensive .setup .ConfigGenerator ;
3333import com .android .layoutlib .bridge .intensive .setup .LayoutLibTestCallback ;
3434import com .android .layoutlib .bridge .intensive .setup .LayoutPullParser ;
35+ import com .android .resources .Density ;
36+ import com .android .resources .Navigation ;
3537import com .android .utils .ILogger ;
3638
3739import org .junit .Before ;
@@ -288,20 +290,50 @@ public void testAllWidgets() throws ClassNotFoundException {
288290 renderAndVerify ("allwidgets.xml" , "allwidgets.png" );
289291 }
290292
293+ /** Test expand_layout.xml */
294+ @ Test
295+ public void testExpand () throws ClassNotFoundException {
296+ // Create the layout pull parser.
297+ LayoutPullParser parser = new LayoutPullParser (APP_TEST_RES + "/layout/" +
298+ "expand_vert_layout.xml" );
299+ // Create LayoutLibCallback.
300+ LayoutLibTestCallback layoutLibCallback = new LayoutLibTestCallback (getLogger ());
301+ layoutLibCallback .initResources ();
302+
303+ ConfigGenerator customConfigGenerator = new ConfigGenerator ()
304+ .setScreenWidth (300 )
305+ .setScreenHeight (20 )
306+ .setDensity (Density .XHIGH )
307+ .setNavigation (Navigation .NONAV );
308+
309+ SessionParams params = getSessionParams (parser , customConfigGenerator ,
310+ layoutLibCallback , "Theme.Material.NoActionBar.Fullscreen" , RenderingMode .V_SCROLL ,
311+ 22 );
312+
313+ renderAndVerify (params , "expand_vert_layout.png" );
314+
315+ customConfigGenerator = new ConfigGenerator ()
316+ .setScreenWidth (20 )
317+ .setScreenHeight (300 )
318+ .setDensity (Density .XHIGH )
319+ .setNavigation (Navigation .NONAV );
320+ parser = new LayoutPullParser (APP_TEST_RES + "/layout/" +
321+ "expand_horz_layout.xml" );
322+ params = getSessionParams (parser , customConfigGenerator ,
323+ layoutLibCallback , "Theme.Material.NoActionBar.Fullscreen" , RenderingMode
324+ .H_SCROLL , 22 );
325+
326+ renderAndVerify (params , "expand_horz_layout.png" );
327+ }
328+
291329 /**
292330 * Create a new rendering session and test that rendering given layout on nexus 5
293331 * doesn't throw any exceptions and matches the provided image.
294332 */
295- private void renderAndVerify (String layoutFileName , String goldenFileName )
333+ private void renderAndVerify (SessionParams params , String goldenFileName )
296334 throws ClassNotFoundException {
297- // Create the layout pull parser.
298- LayoutPullParser parser = new LayoutPullParser (APP_TEST_RES + "/layout/" + layoutFileName );
299- // Create LayoutLibCallback.
300- LayoutLibTestCallback layoutLibCallback = new LayoutLibTestCallback (getLogger ());
301- layoutLibCallback .initResources ();
302335 // TODO: Set up action bar handler properly to test menu rendering.
303336 // Create session params.
304- SessionParams params = getSessionParams (parser , ConfigGenerator .NEXUS_5 , layoutLibCallback );
305337 RenderSession session = mBridge .createSession (params );
306338 if (!session .getResult ().isSuccess ()) {
307339 getLogger ().error (session .getResult ().getException (),
@@ -321,26 +353,45 @@ private void renderAndVerify(String layoutFileName, String goldenFileName)
321353 }
322354 }
323355
356+ /**
357+ * Create a new rendering session and test that rendering given layout on nexus 5
358+ * doesn't throw any exceptions and matches the provided image.
359+ */
360+ private void renderAndVerify (String layoutFileName , String goldenFileName )
361+ throws ClassNotFoundException {
362+ // Create the layout pull parser.
363+ LayoutPullParser parser = new LayoutPullParser (APP_TEST_RES + "/layout/" + layoutFileName );
364+ // Create LayoutLibCallback.
365+ LayoutLibTestCallback layoutLibCallback = new LayoutLibTestCallback (getLogger ());
366+ layoutLibCallback .initResources ();
367+ // TODO: Set up action bar handler properly to test menu rendering.
368+ // Create session params.
369+ SessionParams params = getSessionParams (parser , ConfigGenerator .NEXUS_5 ,
370+ layoutLibCallback , "Theme.Material.Light.DarkActionBar" , RenderingMode .NORMAL , 22 );
371+ renderAndVerify (params , goldenFileName );
372+ }
373+
324374 /**
325375 * Uses Theme.Material and Target sdk version as 22.
326376 */
327377 private SessionParams getSessionParams (LayoutPullParser layoutParser ,
328- ConfigGenerator configGenerator , LayoutLibTestCallback layoutLibCallback ) {
378+ ConfigGenerator configGenerator , LayoutLibTestCallback layoutLibCallback ,
379+ String themeName , RenderingMode renderingMode , int targetSdk ) {
329380 FolderConfiguration config = configGenerator .getFolderConfig ();
330381 ResourceResolver resourceResolver =
331382 ResourceResolver .create (mProjectResources .getConfiguredResources (config ),
332383 mFrameworkRepo .getConfiguredResources (config ),
333- "Theme.Material.Light.DarkActionBar" , false );
384+ themeName , false );
334385
335386 return new SessionParams (
336387 layoutParser ,
337- RenderingMode . NORMAL ,
388+ renderingMode ,
338389 null /*used for caching*/ ,
339390 configGenerator .getHardwareConfig (),
340391 resourceResolver ,
341392 layoutLibCallback ,
342393 0 ,
343- 22 , // TODO: Make it more configurable to run tests for various versions.
394+ targetSdk ,
344395 getLayoutLog ());
345396 }
346397
0 commit comments