Skip to content

Latest commit

 

History

History
372 lines (239 loc) · 11.4 KB

TESTCASES.md

File metadata and controls

372 lines (239 loc) · 11.4 KB

Test Cases

Series of manually performed test cases for scenarios that are difficult / not feasible to test in an automated fashion.

Verify all sibling tiles load when loadSiblings = true

steps

  1. Open the kitchen sink example.
  2. Ensure loadSiblings is enabled.
  3. Ensure displayActiveTiles is enabled.
  4. Zoom in as much as possible so much of the tileset is not visible.
  5. Wait until all tiles have loaded.
  6. Disable the enableUpdate option.
  7. Zoom out to view the whole tileset.

expected

Tiles are displayed all the way out to the edge of the tileset.

Verify sibling tiles do not load when loadSiblings = false

steps

  1. Open the kitchen sink example.
  2. Ensure loadSiblings is disabled.
  3. Ensure displayActiveTiles is enabled.
  4. Zoom in as much as possible so much of the tileset is not visible.
  5. Wait until all tiles have loaded.
  6. Disable the enableUpdate option.
  7. Zoom out to view the whole tileset.

expected

Only tiles that were visible when zoomed in are displayed.

Verify that active tiles render when displayActiveTiles = true

steps

  1. Open the kitchen sink example.
  2. Ensure loadSiblings is enabled.
  3. Ensure displayActiveTiles is enabled.
  4. Zoom in as much as possible so much of the tileset is not visible.
  5. Wait until all tiles have loaded.
  6. Disable the enableUpdate option.
  7. Zoom out to view the whole tileset.

expected

Tiles are displayed all the way out to the edge of the tileset but they are not when displayActiveTiles is false.

Verify tiles load up to errorTarget option

steps

  1. Open the kitchen sink example.
  2. Open the Javascript console.
  3. Ensure errorTarget is set to 6.
  4. Enable SCREEN_ERROR color mode.
  5. Zoom to various levels.
  6. Click on tiles to view current screen space error in the console.

expected

No tiles are above the 6.0 error target threshold.

Verify parent tiles do not load outside of the errorThreshold option

steps

  1. Open the kitchen sink example.
  2. Set error target to 2.
  3. Set error threshold to 6.
  4. Open the javascript console.
  5. Hit "reload".
  6. Inspect the tileset using the following script:
tiles.traverse( tile => {

  let str = new Array( tile.__depth + 1 ).join( '  ' );
  str += tile.__error.toFixed( 2 );
  str += ' : ';
  str += tile.__loadingState;
  console.log( str )
  return tile.__isLeaf;

} );

expected

Verify that no parent tiles have loaded ( __loadingState should equal 0 ) if they have a threshold above 18 ( ( target + 1 ) * threshold ).

Verify tiles do not display past the maxDepth threshold

steps

  1. Open the kitchen sink example.
  2. Open the Javascript console.
  3. Ensure maxDepth is set to 2.
  4. Enable DEPTH color mode.
  5. Click on tiles to view current depth in the console.

expected

No tiles are above or equal to the 2 max depth value.

Verify that tiles do not change when update() is not called

steps

  1. Open the kitchen sink example.
  2. Zoom all the way in.
  3. Disable the enableUpdate option.
  4. Zoom out.

expected

Verify tiles no longer update with the camera view.

Verify tiles are only displayed within the camera frustum.

steps

  1. Open the kitchen sink example.
  2. Enable the third person camera view.
  3. Zoom in the main view so part of the tileset is cut off.

expected

Verify only tiles in view of the frustum are displayed in the third person camera view.

Verify that multiple cameras are taken into account when calculating error

steps

  1. Open the kitchen sink example.
  2. Enable the third person camera view.
  3. Enable the second camera view.
  4. Enable GEOMETRIC_ERROR color mode.
  5. Zoom in the both cameras on opposite sides of the terrain so part of the tileset is cut off.

expected

Verify only tiles in view of both cameras frustums are displayed in the third person camera view and that tiles nearest the cameras have the lowest geometric error.

Verify that raycasting works as expected

steps

  1. Open the kitchen sink example.
  2. Enable raycasting.
  3. Hover over the surface of the terrain.
  4. Repeat with firstHitOnly = false.

expected

Verify the hit marker is on the point under the mouse and that the normal lines up with the surface.

Verify that raycasting works as expected with just root

steps

  1. Open the kitchen sink example.
  2. Enable raycasting.
  3. Set max depth option to 1.
  4. Hover over the surface of the terrain.
  5. Repeat with firstHitOnly = false.

expected

Verify the hit marker is on the point under the mouse and that the normal lines up with the surface.

Verify debug bounds display when displayBoxBounds = true

steps

  1. Open the kitchen sink example.
  2. Enable display box bounds option.
  3. Move the camera around and zoom in and out.

expected

Verify the boxes change with the level of detail of the terrain.

Verify it does not pop to higher lod on zoom out

steps

  1. Open the kitchen sink example.
  2. Set the error target to 2.
  3. Set the error threshold to 6.
  4. Zoom in all the way.
  5. Click rebuild.
  6. Wait for all tiles to load.
  7. Set the error threshold to 1000 (or zoom out).

expected

Verify the display does not change and the tiles to not disappear while parent tiles load.

Verify the renderer does not repeatedly try to download a failed tileset.json

steps

  1. Open the kitchen sink example.
  2. Set the location hash to #./non/existing/tileset.json to load a different tileset.

expected

Verify that an error is logged stating that the tileset could not be found just once.

Verify that failing to load a parent tile does not prevent child tiles from loading

steps

  1. Open the kitchen sink example with a midtile with broken content by navigating here.
  2. Set the error threshold as high as it goes.
  3. Click rebuild.

expected

Verify an error is logged stating that the root tile content could not be loaded, that the stats state that is 1 tile that failed, that "downloads" and "parsing" eventually settle to 0, and that child tiles continue to render.

Verify that the tileset will render when a tile with no content is present

steps

  1. Open the kitchen sink example with the no root content tileset by navigating here.
  2. Set the error threshold as high as it goes.
  3. Click rebuild.

expected

Verify that the tileset still renders correctly.

Verify example renderer can load a full url

steps

  1. Open the kitchen sink example with a remote tileset by navigating here.

expected

Verify the tileset loads correctly and tehre are no errors in the console.

Verify example tileset can be dragged offscreen

steps

  1. Open the kitchen sink example with the no root content tileset by navigating here.
  2. Slowly move the tileset offscreen by right clicking and dragging the view.

expected

Verify no errors are logged.

Verify tile data is disposed of properly

steps

  1. Open the custom materials example.
  2. Wait for the tileset to load completely.
  3. Verify that the stats display 125 geometries, 126 textures, and 1 programs.
  4. Switch to "GRADIENT" display.
  5. Click "rebuild".
  6. Wait for the tileset to completely load.
  7. Switch to "DEFAULT" display.
  8. Click "rebuild".

expected

Verify that the stats display 125 geometries, 126 textures, and 1 programs.

Verify stopAtEmptyTiles works

steps

  1. Open the kitchen sink example by navigating here.
  2. Set maxDepth to 1.
  3. Verify that only 1 tile is visible.
  4. Open the kitchen sink example with the no root content tileset by navigating here.
  5. Set maxDepth to 1.
  6. Verify that all tiles disappear.

expected

No tiles are visible when the active leafs have no content.

Verify maxDepth limit does not stop at empty tiles when stopAtEmptyTiles = false

  1. Open the kitchen sink example by navigating here.
  2. Set maxDepth to 1.
  3. Verify that only 1 tile is visible.
  4. Open the kitchen sink example with the no root content tileset by navigating here.
  5. Disable stopAtEmptyTiles.
  6. Set maxDepth to 1.
  7. Verify that 4 tiles are visible.

expected

The next shallowest tiles are visible past the maxDepth cutoff.

Verify tileset with missing mid tile content loads and renders correctly

steps

  1. Open the kitchen sink example with the no root content tileset by navigating here.
  2. Zoom in slowly and verify the tiles load correctly and completely.
  3. Set errorTarget to 0.
  4. Set maxDepth to 3.
  5. Set colorMode to RANDOM_COLOR.
  6. Verify that one tile is missing.
  7. Disable stopAtEmptyTiles.
  8. Verify that there are four smaller tiles compared to the rest of the tileset where the missing midtile with content is.

expected

The tileset renders and loads correctly.

Verify tileset with additive tiles renders correctly

steps

  1. Open the kitchen sink example with the no root content tileset by navigating here.
  2. Set colorMode to RANDOM_COLOR.

expected

Verify that all tiles render on top of each other including the root and that setting the error target and threshold to 0 does not change this. Ensure that raising the error target to the max value will cause deeper tiles to disappear.

Verify an external tileset loads correctly

steps

  1. Load tileset-external.json in the kitchen sink example.
  2. Zoom in and out.
  3. Set target error to 0.

expected

Verify the tileset loads correctly and there are no missing chunks or errors in the console.

Verify the rest of the tileset renders correctly if an external tileset fails to load

steps

  1. Load tileset-external-broken.json in the kitchen sink example.
  2. Zoom in and out.
  3. Set target error to 0.

expected

Verify that the external tileset does not load but the rest of the tileset continues to work as expected with a gap.

Verify an external tileset can unload from the cache

steps

  1. Load tileset-external.json in the kitchen sink example.
  2. Zoom in and out.
  3. Set target error to 0.
  4. Ensure external tileset has loaded by running tiles.root.children[0].children[0].children in the console and verifying it's not empty.
  5. Set the max depth to 0, and set min and max cache size to 1 before resetting them to force everything to unload. Check the cache display to ensure it's unloaded.
  6. Ensure external tileset is unloaded by tiles.root.children[0].children[0].children in the console and verifying it's empty.
  7. Raise the max depth again and verify that the external tileset loads once again.

expected

Verify all steps happen as written.