Implement basic functionality in BufferGL.

BUG=angle:881

Change-Id: I8d761741d204d26cea1c87eec725bc8ebaaaa584
Reviewed-on: https://chromium-review.googlesource.com/252800
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/tests/angle_tests/SimpleOperationTest.cpp b/tests/angle_tests/SimpleOperationTest.cpp
index 7eb97cf..4a10885 100644
--- a/tests/angle_tests/SimpleOperationTest.cpp
+++ b/tests/angle_tests/SimpleOperationTest.cpp
@@ -142,3 +142,49 @@
 
     EXPECT_GL_NO_ERROR();
 }
+
+TYPED_TEST(SimpleOperationTest, BufferDataWithData)
+{
+    GLuint buffer;
+    glGenBuffers(1, &buffer);
+    glBindBuffer(GL_ARRAY_BUFFER, buffer);
+
+    std::vector<uint8_t> data(1024);
+    glBufferData(GL_ARRAY_BUFFER, data.size(), &data[0], GL_STATIC_DRAW);
+
+    glDeleteBuffers(1, &buffer);
+
+    EXPECT_GL_NO_ERROR();
+}
+
+TYPED_TEST(SimpleOperationTest, BufferDataWithNoData)
+{
+    GLuint buffer;
+    glGenBuffers(1, &buffer);
+    glBindBuffer(GL_ARRAY_BUFFER, buffer);
+    glBufferData(GL_ARRAY_BUFFER, 1024, nullptr, GL_STATIC_DRAW);
+    glDeleteBuffers(1, &buffer);
+
+    EXPECT_GL_NO_ERROR();
+}
+
+TYPED_TEST(SimpleOperationTest, BufferSubData)
+{
+    GLuint buffer;
+    glGenBuffers(1, &buffer);
+    glBindBuffer(GL_ARRAY_BUFFER, buffer);
+
+    const size_t bufferSize = 1024;
+    glBufferData(GL_ARRAY_BUFFER, bufferSize, nullptr, GL_STATIC_DRAW);
+
+    const size_t subDataCount = 16;
+    std::vector<uint8_t> data(bufferSize / subDataCount);
+    for (size_t i = 0; i < subDataCount; i++)
+    {
+        glBufferSubData(GL_ARRAY_BUFFER, data.size() * i, data.size(), &data[0]);
+    }
+
+    glDeleteBuffers(1, &buffer);
+
+    EXPECT_GL_NO_ERROR();
+}