blob: d58e9637f5d602181523bd8eb6becec9e9eefdba [file] [log] [blame]
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
#include "gpu/np_utils/dynamic_np_object.h"
#include "gpu/np_utils/np_browser_stub.h"
#include "gpu/np_utils/np_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using testing::Return;
using testing::StrictMock;
namespace np_utils {
class NPDynamicNPObjectTest : public testing::Test {
protected:
virtual void SetUp() {
object_ = NPCreateObject<DynamicNPObject>(NULL);
}
StubNPBrowser stub_browser_;
NPObjectPointer<DynamicNPObject> object_;
};
TEST_F(NPDynamicNPObjectTest, HasPropertyReturnsFalseForMissingProperty) {
EXPECT_FALSE(NPHasProperty(NULL, object_, "missing"));
}
TEST_F(NPDynamicNPObjectTest, GetPropertyReturnsFalseForMissingProperty) {
int32 r;
EXPECT_FALSE(NPGetProperty(NULL, object_, "missing", &r));
}
TEST_F(NPDynamicNPObjectTest, CanSetProperty) {
EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7));
int32 r;
EXPECT_TRUE(NPHasProperty(NULL, object_, "foo"));
EXPECT_TRUE(NPGetProperty(NULL, object_, "foo", &r));
EXPECT_EQ(7, r);
}
TEST_F(NPDynamicNPObjectTest, CanRemoveProperty) {
EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7));
EXPECT_TRUE(NPHasProperty(NULL, object_, "foo"));
EXPECT_FALSE(NPRemoveProperty(NULL, object_, "foo"));
EXPECT_FALSE(NPHasProperty(NULL, object_, "foo"));
int32 r;
EXPECT_FALSE(NPGetProperty(NULL, object_, "foo", &r));
}
TEST_F(NPDynamicNPObjectTest, CanEnumerateProperties) {
EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7));
NPIdentifier* names;
uint32 num_names;
EXPECT_TRUE(object_->_class->enumerate(object_.Get(), &names, &num_names));
EXPECT_EQ(1, num_names);
EXPECT_EQ(NPBrowser::get()->GetStringIdentifier("foo"), names[0]);
NPBrowser::get()->MemFree(names);
}
// Properties should not be
TEST_F(NPDynamicNPObjectTest, InvalidateNullsObjectProperties) {
EXPECT_EQ(1, object_->referenceCount);
{
EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", object_));
EXPECT_TRUE(NPHasProperty(NULL, object_, "foo"));
object_->_class->invalidate(object_.Get());
EXPECT_TRUE(NPHasProperty(NULL, object_, "foo"));
NPObjectPointer<DynamicNPObject> r;
EXPECT_TRUE(NPGetProperty(NULL, object_, "foo", &r));
EXPECT_TRUE(NULL == r.Get());
}
// Invalidate did not release object
EXPECT_EQ(2, object_->referenceCount);
NPBrowser::get()->ReleaseObject(object_.Get());
}
} // namespace np_utils