Home | History | Annotate | Download | only in wtf
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 #include "wtf/RefPtr.h"
      7 
      8 #include "wtf/text/StringImpl.h"
      9 #include <gtest/gtest.h>
     10 
     11 namespace {
     12 
     13 TEST(RefPtrTest, Basic)
     14 {
     15     RefPtr<StringImpl> string;
     16     EXPECT_TRUE(!string);
     17     string = StringImpl::create("test");
     18     EXPECT_TRUE(!!string);
     19     string.clear();
     20     EXPECT_TRUE(!string);
     21 }
     22 
     23 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES)
     24 TEST(RefPtrTest, MoveAssignmentOperator)
     25 {
     26     RefPtr<StringImpl> a = StringImpl::create("a");
     27     RefPtr<StringImpl> b = StringImpl::create("b");
     28     // FIXME: Instead of explicitly casting to RefPtr<StringImpl>&& here, we should use std::move, but that
     29     // requires us to have a standard library that supports move semantics.
     30     b = static_cast<RefPtr<StringImpl>&&>(a);
     31     EXPECT_TRUE(!!b);
     32     EXPECT_TRUE(!a);
     33 }
     34 #endif
     35 
     36 }
     37