| 90 | // shared_ptrs which it would do if we used VectorPtr. |
| 91 | template <typename T> |
| 92 | void basicTest(const std::shared_ptr<T>& vector) { |
| 93 | ASSERT_TRUE(vector->isNullsWritable()); |
| 94 | ASSERT_TRUE(BaseVector::isVectorWritable(vector)); |
| 95 | |
| 96 | { |
| 97 | auto copy = vector; |
| 98 | ASSERT_TRUE(vector->isNullsWritable()); |
| 99 | // The Vector is not uniquely referenced. |
| 100 | ASSERT_FALSE(BaseVector::isVectorWritable(vector)); |
| 101 | } |
| 102 | |
| 103 | // Hack to ensure nulls are allocated. |
| 104 | vector->mutableRawNulls(); |
| 105 | ASSERT_TRUE(vector->isNullsWritable()); |
| 106 | ASSERT_TRUE(BaseVector::isVectorWritable(vector)); |
| 107 | |
| 108 | { |
| 109 | // Make a copy of nulls so it's no longer mutable. |
| 110 | auto nulls = vector->nulls(); |
| 111 | ASSERT_FALSE(vector->isNullsWritable()); |
| 112 | ASSERT_FALSE(BaseVector::isVectorWritable(vector)); |
| 113 | } |
| 114 | } |
| 115 | }; |
| 116 | |
| 117 | TEST_F(IsWritableVectorTest, flatVector) { |
nothing calls this directly
no test coverage detected