TEST(FeatureSets, Compatible) {
  std::vector<ImageIndex> vertices(4);
  vertices[0] = ImageIndex(0, 0);
  vertices[1] = ImageIndex(0, 0);
  vertices[2] = ImageIndex(0, 1);
  vertices[3] = ImageIndex(0, 2);

  FeatureSets<int> sets;
  sets.init(vertices);

  ASSERT_EQ(sets.compatible(0, 1), false);
  ASSERT_EQ(sets.compatible(0, 2), true);
  ASSERT_EQ(sets.compatible(0, 3), true);
  ASSERT_EQ(sets.compatible(1, 2), true);
  ASSERT_EQ(sets.compatible(1, 3), true);
  ASSERT_EQ(sets.compatible(2, 3), true);

  sets.join(0, 2);

  ASSERT_EQ(sets.compatible(0, 1), false);
  ASSERT_EQ(sets.compatible(0, 3), true);
  ASSERT_EQ(sets.compatible(1, 2), false);
  ASSERT_EQ(sets.compatible(1, 3), true);
  ASSERT_EQ(sets.compatible(2, 3), true);

  sets.join(1, 3);

  ASSERT_EQ(sets.compatible(0, 1), false);
  ASSERT_EQ(sets.compatible(0, 3), false);
  ASSERT_EQ(sets.compatible(1, 2), false);
  ASSERT_EQ(sets.compatible(2, 3), false);
}
TEST(FeatureSets, Count) {
  std::vector<ImageIndex> vertices(4);
  vertices[0] = ImageIndex(0, 0);
  vertices[1] = ImageIndex(0, 0);
  vertices[2] = ImageIndex(0, 1);
  vertices[3] = ImageIndex(0, 2);

  // Check that there are four sets.
  FeatureSets<int> sets;
  sets.init(vertices);

  ASSERT_EQ(sets.count(), 4);
}
TEST(FeatureSets, SeparateJoin) {
  std::vector<ImageIndex> vertices(4);
  vertices[0] = ImageIndex(0, 0);
  vertices[1] = ImageIndex(0, 0);
  vertices[2] = ImageIndex(0, 1);
  vertices[3] = ImageIndex(0, 2);

  FeatureSets<int> sets;
  sets.init(vertices);
  sets.join(0, 2);
  sets.join(1, 3);

  // There should be only two sets.
  ASSERT_EQ(sets.count(), 2);

  std::map<ImageIndex, int> desired;
  desired[ImageIndex(0, 0)] = 0;
  desired[ImageIndex(0, 1)] = 2;
  ASSERT_EQ(sets.find(0).elements, desired);
  ASSERT_EQ(sets.find(2).elements, desired);

  desired.clear();
  desired[ImageIndex(0, 0)] = 1;
  desired[ImageIndex(0, 2)] = 3;
  ASSERT_EQ(sets.find(1).elements, desired);
  ASSERT_EQ(sets.find(3).elements, desired);
}
Example #4
0
ImageIndex ImageIndex::MakeGeneric(GLenum target, GLint mipIndex)
{
    GLint layerIndex = IsCubeMapTextureTarget(target)
                           ? static_cast<GLint>(CubeMapTextureTargetToLayerIndex(target))
                           : ENTIRE_LEVEL;
    return ImageIndex(target, mipIndex, layerIndex);
}
Example #5
0
ImageIndex ImageIndex::MakeInvalid()
{
    return ImageIndex(GL_NONE, -1, -1);
}
Example #6
0
ImageIndex ImageIndex::Make3D(GLint mipIndex, GLint layerIndex)
{
    return ImageIndex(GL_TEXTURE_3D, mipIndex, layerIndex);
}
Example #7
0
ImageIndex ImageIndex::MakeCube(GLenum target, GLint mipIndex)
{
    ASSERT(gl::IsCubeMapTextureTarget(target));
    return ImageIndex(target, mipIndex,
                      static_cast<GLint>(CubeMapTextureTargetToLayerIndex(target)));
}
Example #8
0
ImageIndex ImageIndex::Make2DArray(GLint mipIndex, GLint layerIndex)
{
    return ImageIndex(GL_TEXTURE_2D_ARRAY, mipIndex, layerIndex);
}
Example #9
0
ImageIndex ImageIndex::Make2D(GLint mipIndex)
{
    return ImageIndex(GL_TEXTURE_2D, mipIndex, ENTIRE_LEVEL);
}
Example #10
0
ImageIndex ImageIndex::MakeCube(GLenum target, GLint mipIndex)
{
    ASSERT(gl::IsCubemapTextureTarget(target));
    return ImageIndex(target, mipIndex, TextureCubeMap::targetToLayerIndex(target));
}
Example #11
0
ImageIndex ImageIndex::Make2DMultisample()
{
    return ImageIndex(GL_TEXTURE_2D_MULTISAMPLE, 0, ENTIRE_LEVEL, 1);
}
Example #12
0
ImageIndex ImageIndex::Make2DArrayRange(GLint mipIndex, GLint layerIndex, GLint numLayers)
{
    return ImageIndex(GL_TEXTURE_2D_ARRAY, mipIndex, layerIndex, numLayers);
}
Example #13
0
ImageIndex ImageIndex::MakeRectangle(GLint mipIndex)
{
    return ImageIndex(GL_TEXTURE_RECTANGLE_ANGLE, mipIndex, ENTIRE_LEVEL, 1);
}