[llvm] r218783 - Add an immovable type to test Optional<T>::emplace more rigorously after r218732.

Justin Bogner mail at justinbogner.com
Wed Oct 1 12:09:43 PDT 2014


David Blaikie <dblaikie at gmail.com> writes:
> Author: dblaikie
> Date: Wed Oct  1 13:29:44 2014
> New Revision: 218783
>
> URL: http://llvm.org/viewvc/llvm-project?rev=218783&view=rev
> Log:
> Add an immovable type to test Optional<T>::emplace more rigorously
> after r218732.
>
> Modified:
>     llvm/trunk/unittests/ADT/OptionalTest.cpp
>
> Modified: llvm/trunk/unittests/ADT/OptionalTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/OptionalTest.cpp?rev=218783&r1=218782&r2=218783&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/ADT/OptionalTest.cpp (original)
> +++ llvm/trunk/unittests/ADT/OptionalTest.cpp Wed Oct  1 13:29:44 2014
> @@ -324,15 +324,36 @@ TEST_F(OptionalTest, MoveOnlyAssigningAs
>    EXPECT_EQ(1u, MoveOnly::Destructions);
>  }
>  
> +struct Immovable {
> +  static unsigned Constructions;
> +  static unsigned Destructions;
> +  int val;
> +  explicit Immovable(int val) : val(val) {
> +    ++Constructions;
> +  }
> +  ~Immovable() {
> +    ++Destructions;
> +  }
> +  static void ResetCounts() {
> +    Constructions = 0;
> +    Destructions = 0;
> +  }
> +private:
> +  // This should disable all move/copy operations.
> +  Immovable(Immovable&& other) LLVM_DELETED_FUNCTION;
> +};
> +
> +unsigned Immovable::Constructions = 0;
> +unsigned Immovable::Destructions = 0;
> +
>  TEST_F(OptionalTest, MoveOnlyEmplace) {

This test name is a little misleading now.

> -  Optional<MoveOnly> A;
> -  MoveOnly::ResetCounts();
> +  Optional<Immovable> A;
> +  Immovable::ResetCounts();
>    A.emplace(4);
>    EXPECT_TRUE((bool)A);
>    EXPECT_EQ(4, A->val);
> -  EXPECT_EQ(0u, MoveOnly::MoveConstructions);
> -  EXPECT_EQ(0u, MoveOnly::MoveAssignments);
> -  EXPECT_EQ(0u, MoveOnly::Destructions);
> +  EXPECT_EQ(1u, Immovable::Constructions);
> +  EXPECT_EQ(0u, Immovable::Destructions);
>  }
>  
>  #if LLVM_HAS_RVALUE_REFERENCE_THIS
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list