using System;
using System.Collections;

namespace Sasa.QualityTools.DrFx.Tests.Violation.CSharp.Microsoft.Design
{
    // このクラスは CA1010 に違反しています。
    // このクラスは CA1039 に違反しています。
    public class Rule1039 : IList
    {
        private ArrayList values = new ArrayList();

        public int Count
        {
            get
            {
                return this.values.Count;
            }
        }

        public bool IsFixedSize
        {
            get
            {
                return this.values.IsFixedSize;
            }
        }

        public bool IsReadOnly
        {
            get
            {
                return this.values.IsReadOnly;
            }
        }

        public bool IsSynchronized
        {
            get
            {
                return this.values.IsSynchronized;
            }
        }

        public object SyncRoot
        {
            get
            {
                return this.SyncRoot;
            }
        }

        public object this[int index]
        {
            get
            {
                return this.values[index];
            }
            set
            {
                this.values[index] = value;
            }
        }

        public int Add(object value)
        {
            return this.values.Add(value);
        }

        public void Clear()
        {
            this.values.Clear();
        }

        public bool Contains(object value)
        {
            return this.values.Contains(value);
        }

        public void CopyTo(Array array, int index)
        {
            this.values.CopyTo(array, index);
        }

        public void CopyTo(string[] array, int index)
        {
            this.values.CopyTo(array, index);
        }

        public IEnumerator GetEnumerator()
        {
            return this.values.GetEnumerator();
        }

        public int IndexOf(object value)
        {
            return this.values.IndexOf(value);
        }

        public void Insert(int index, object value)
        {
            this.values.Insert(index, value);
        }

        public void Remove(object value)
        {
            this.values.Remove(value);
        }

        public void RemoveAt(int index)
        {
            this.values.RemoveAt(index);
        }
    }
}
