/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ using System.Collections.Generic; using DotCMIS.Client; using DotCMIS.Client.Impl; using NUnit.Framework; namespace DotCMISUnitTest { [TestFixture] class EnumeratorTest { private const int PageSize = 12; private IList source; private IItemEnumerable testEnumerable; [SetUp] public void Init() { source = new List(); for (int i = 0; i < 100; i++) { source.Add(i); } PageFetcher.FetchPage fetchPageDelegate = delegate(long maxNumItems, long skipCount) { IList page = new List(); for (int i = (int)skipCount; i < skipCount + maxNumItems; i++) { if (source.Count <= i) { break; } page.Add(source[i]); } return new PageFetcher.Page(page, source.Count, skipCount + maxNumItems < source.Count); }; testEnumerable = new CollectionEnumerable(new PageFetcher(PageSize, fetchPageDelegate)); } [Test] public void TestIteration() { Assert.AreEqual(source.Count, testEnumerable.TotalNumItems); Assert.AreEqual(PageSize, testEnumerable.PageNumItems); int i = 0; foreach (int x in testEnumerable) { Assert.AreEqual(i, x); i++; } } [Test] public void TestSkip() { int i = 42; foreach (int x in testEnumerable.SkipTo(42)) { Assert.AreEqual(i, x); i++; } Assert.AreEqual(source.Count, i); } [Test] public void TestOverSkip() { foreach (int x in testEnumerable.SkipTo(source.Count + 1)) { Assert.Fail(); } } [Test] public void TestPage() { int i = 0; foreach (int x in testEnumerable.GetPage(8)) { Assert.AreEqual(i, x); i++; } Assert.AreEqual(8, i); } [Test] public void TestBigPage() { int i = 0; foreach (int x in testEnumerable.GetPage(source.Count * 2)) { Assert.AreEqual(i, x); i++; } Assert.AreEqual(source.Count, i); } [Test] public void TestSkipAndPage() { int i = 42; foreach (int x in testEnumerable.SkipTo(42).GetPage(20)) { Assert.AreEqual(i, x); i++; } Assert.AreEqual(62, i); } } }