/* * libfud * Copyright 2024 Dominick Allen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "fud_array.hpp" #include "fud_span.hpp" #include "gtest/gtest.h" namespace fud { TEST(SpanTest, MutableSpanTest) { Array data{1, 2, 3, 4}; auto span = Span::make(data); for (auto& elt : span) { elt *= 2; } const Array expected{2, 4, 6, 8}; EXPECT_EQ(data, expected); const int* innerImmutable = span.data(); EXPECT_EQ(*innerImmutable, expected[0]); } TEST(SpanTest, ConstSpanTest) { const Array data{1, 2, 3, 4}; auto span = Span::make(data); int sum = 0; for (const auto& elt : span) { sum += elt; } EXPECT_EQ(sum, 4 * 5 / 2); } } // namespace fud