[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/chid/pythonnet/develop/pythonnet/src/testing/indexertest.cs [Back]  [Original]

// ==========================================================================
// This software is subject to the provisions of the Zope Public License,
// Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
// WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
// FOR A PARTICULAR PURPOSE.
// ==========================================================================

using System;
using System.Collections;

namespace Python.Test {

    //========================================================================
    // Supports units tests for indexer access.
    //========================================================================

    public class IndexerBase {

        protected Hashtable t;

        protected IndexerBase() {
            t = new Hashtable();
        }

        protected string GetValue(object index) {
            if (index == null) {
                return null;
            }
            object value = t[index];
            if (value != null) {
                return (string)value;
            }
            return null;
        }
            
    }


    public class PublicIndexerTest : IndexerBase {

        public PublicIndexerTest() : base () {}

        public string this [int index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class ProtectedIndexerTest : IndexerBase {

        public ProtectedIndexerTest() : base () {}

        protected string this [int index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class InternalIndexerTest : IndexerBase {

        public InternalIndexerTest() : base () {}

        internal string this [int index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class PrivateIndexerTest : IndexerBase {

        public PrivateIndexerTest() : base () {}

        private string this [int index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class BooleanIndexerTest : IndexerBase {

        public BooleanIndexerTest() : base() {}

        public string this [bool index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class ByteIndexerTest : IndexerBase {

        public ByteIndexerTest() : base() {}

        public string this [byte index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class SByteIndexerTest : IndexerBase {

        public SByteIndexerTest() : base() {}

        public string this [sbyte index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class CharIndexerTest : IndexerBase {

        public CharIndexerTest() : base() {}

        public string this [char index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class Int16IndexerTest : IndexerBase {

        public Int16IndexerTest() : base() {}

        public string this [short index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class Int32IndexerTest : IndexerBase {

        public Int32IndexerTest() : base() {}

        public string this [int index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class Int64IndexerTest : IndexerBase {

        public Int64IndexerTest() : base() {}

        public string this [long index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class UInt16IndexerTest : IndexerBase {

        public UInt16IndexerTest() : base() {}

        public string this [ushort index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class UInt32IndexerTest : IndexerBase {

        public UInt32IndexerTest() : base() {}

        public string this [uint index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class UInt64IndexerTest : IndexerBase {

        public UInt64IndexerTest() : base() {}

        public string this [ulong index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class SingleIndexerTest : IndexerBase {

        public SingleIndexerTest() : base() {}

        public string this [float index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class DoubleIndexerTest : IndexerBase {

        public DoubleIndexerTest() : base() {}

        public string this [double index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class DecimalIndexerTest : IndexerBase {

        public DecimalIndexerTest() : base() {}

        public string this [decimal index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class StringIndexerTest : IndexerBase {

        public StringIndexerTest() : base() {}

        public string this [string index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class EnumIndexerTest : IndexerBase {

        public EnumIndexerTest() : base() {}

        public string this [ShortEnum index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class ObjectIndexerTest : IndexerBase {

        public ObjectIndexerTest() : base() {}

        public string this [object index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class InterfaceIndexerTest : IndexerBase {

        public InterfaceIndexerTest() : base() {}

        public string this [ISpam index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class TypedIndexerTest : IndexerBase {

        public TypedIndexerTest() : base() {}

        public string this [Spam index] {
            get { return GetValue(index); }
            set { t[index] = value; }
        }

    }


    public class MultiArgIndexerTest : IndexerBase {

        public MultiArgIndexerTest() : base() {}

        public string this [int index1, int index2] {
            get { 
                string key = index1.ToString() + index2.ToString();
                object value = t[key];
                if (value != null) {
                    return (string)value;
                }
                return null;
            }
            set { 
                string key = index1.ToString() + index2.ToString();
                t[key] = value; 
            }
        }

    }


    public class MultiTypeIndexerTest : IndexerBase {

        public MultiTypeIndexerTest() : base() {}

        public string this [int i1, string i2, ISpam i3] {
            get { 
                string key = i1.ToString() + i2.ToString() + 
                             i3.GetHashCode().ToString();
                object value = t[key];
                if (value != null) {
                    return (string)value;
                }
                return null;
            }
            set { 
                string key = i1.ToString() + i2.ToString() + 
                             i3.GetHashCode().ToString();
                t[key] = value; 
            }
        }

    }


}

Web Proxy Viewer  |  New URL  |  Original Page