static private Random random = new Random(); override public object runOneIteration() { int number = random.Next(5); Cronometro cronometro = new Cronometro(); object value; var obj; if (number == 0) { obj = new Derived0(); } else if (number == 1) { obj = new Derived1(); } else if (number == 2) { obj = new Derived2(); } else if (number == 3) { obj = new Derived3(); } else { obj = new Derived4(); } cronometro.start(); for (int i = 0; i < 1000; i++) { value = obj.m(); } cronometro.stop(); this.microSeconds = this.microSeconds + cronometro.getMicroSeconds(); return(value); }
public static void Main() { Derived3 dOb = new Derived3(); BaseClass baseRef; // a base-class reference baseRef = dOb; baseRef.who(); // calls Derived1's who() }
static void Main() { Derived3 dOb = new Derived3(); Base baseRef; // a base class reference baseRef = dOb; baseRef.Who(); // calls Derived1's Who() }
static void Main() { Derived3 dOb = new Derived3(); Base baseRef; // ссылка на базовый класс baseRef = dOb; baseRef.Who(); // вызов метода Who() из класса Derived1 }
public static void Main() { Derived3 dOb = new Derived3(); Base baseRef; // Ссылка на базовый класс. baseRef = dOb; baseRef.who(); // Вызывает метод who() //из класса Derived1. }
static void Main() { Derived3 dOb = new Derived3(); Base baseRef; // ссылка на базовый класс baseRef = dOb; baseRef.Who(); // вызов метода Who() из класса Derived1 Console.ReadKey(); }
public static void Start() { var derived = new Derived3(); derived.AbstractMethod(); derived.MethodWithImplementation(); //The code bellow Won't compile. Abstracts classes can't be instantiated //var baseClass = new Base3() }
static int Main () { Derived1 d1 = new Derived1 (); Derived2 d2 = new Derived2 (); Derived3 d3 = new Derived3 (); Base b1 = d1; Base b2 = d2; Base rb = new Base (); if (d1.Turn () != 4) return 1; if (((IVehicle)d1).Turn () != 4) return 2; if (((Base)d2).Turn () != 8) return 10; if (((IVehicle)d2).Turn () != 7) return 3; if (b2.Turn () != 8) return 4; if (((IVehicle)b2).Turn () != 7) return 5; if (((IVehicle)rb).Stop () != 2) return 6; if (((IVehicle)d1).Stop () != 2) return 7; if (((IVehicle)d2).Stop () != 6) return 8; if (d3.Walk () != 1) return 9; //Console.WriteLine ("TEST {0}", ((IVehicle)b2).Turn ()); return 0; }
public void DiscriminatedUnionThreeUsingThirdSwitchFuncWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); bool ranThird = d.Switch(v => false, v => false, v => true); Assert.IsTrue(ranThird); }
public void DiscriminatedUnionThreeUsingThirdSwitchActionWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); bool ranThird = false; d.Switch(v => { ranThird = false; }, v => { ranThird = false; }, v => { ranThird = true; }); Assert.IsTrue(ranThird); }
public void DiscriminatedUnionThreeUsingThirdValueWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); Assert.AreSame(d3, d.Value); }
public void DiscriminatedUnionThreeUsingThirdSecondWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); Derived2 d2; try { d2 = d.Second; } catch { d2 = null; } Assert.IsNull(d2); }
public void DiscriminatedUnionThreeUsingThirdFirstWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); Derived1 d1; try { d1 = d.First; } catch { d1 = null; } Assert.IsNull(d1); }
public static void Start() { var derived3 = new Derived3(); derived3.MyMethod(); }
static int Main(string[] args) { //управление доступом осуществляется public, private, protected, internal //public разрешает доступ разрешает доступ к члену откуда угодно //private разрешает доступ к члену только для методов внури этого класса //первый пример set, ger к приватной переменной /* MyClass firsttime = new MyClass(); * //не видит переменнойальфа * firsttime.SetAlpha(6); * Console.WriteLine(firsttime.GetAlpha()); * Console.ReadKey();*/ //Создание стека Stack stk1 = new Stack(10); Stack stk2 = new Stack(10); Stack stk3 = new Stack(10); char ch; int i; for (i = 0; !stk1.full(); i++) { stk1.push((char)('A' + i)); } if (stk1.full()) { Console.WriteLine("Стек stk1 полон."); } Console.Write("Содержимое стека stk1"); while (!stk1.empty()) { ch = stk1.pop(); Console.Write(ch); } Console.WriteLine(); if (stk1.empty()) { Console.WriteLine("Стек stk1 пуст.\n"); } //использование переменного количества аргументов Min ob = new Min(); int min; int a = 10, b = 20; min = ob.minVal(a, b); Console.WriteLine("Минимум равен " + min); min = ob.minVal(a, b, -1); Console.WriteLine("Минимум равен " + min); //можно так е передать int массив int[] mass = { 1, 2, 3, 4, 5 }; min = ob.minVal(mass); Console.WriteLine("Минимум равен " + min); //возвращение методами объектов Rect r1 = new Rect(4, 5); Console.Write("Размеры прямоугольника r1: "); r1.show(); //прямоугольник, который в 2ое больше прямоугольника r1 Rect r2 = r1.enlarge(2); //заместо new Rect(width * factor, height * factor) Console.Write("Размеры прямоугольника r2:"); r2.show(); Console.WriteLine("Площадь прямоугольника r2:" + r2.area()); /*В фабриках класса применяются классовые типы значений*/ /*Фабрик класса - метод который используется для построения заданного класса */ MyClass ob2 = new MyClass(); int ii, jj; //генерируем объекты с помощью фабрики класса for (ii = 0, jj = 10; ii < 10; ii++, jj++) { MyClass anotherOb = ob2.factory(ii, jj); //создаём объект anotherOb.show(); } Console.WriteLine(); //12.03.2019 //Вызов перегруженного конструктора с помощью ссылки this /*имя_конструктора (список_параметров1): this(список параметров2) * //тело конструтора, которое может ыть пустым*/ XYCoord t1 = new XYCoord(); XYCoord t2 = new XYCoord(8, 9); XYCoord t3 = new XYCoord(t2); Console.WriteLine("t1.x, t1.y: " + t1.x + ", " + t1.y); Console.WriteLine("t2.x, t2.y: " + t2.x + ", " + t2.y); Console.WriteLine("t3.x, t3.y: " + t3.x + ", " + t3.y); //Возвращение значений из main //Main(): public static int Main(); /*Для работы с аргументами командной строки * Main(): public static void Main(string[] args) public static int Main(string[] args) */ //пирмер //string[] args2 = new string[2]; //string[] args2 = { "закодировать", "зако", "зако"}; /*args2[0] = "закодировать"; * args2[1] = "зако"; * args2[2] = "зако";*/ //перегрузка логических операторов ThreeD tre0 = new ThreeD(); ThreeD tre1 = new ThreeD(1, 1, 1); ThreeD tre2 = new ThreeD(2, 2, 2); Console.WriteLine(tre0 | tre1); Console.WriteLine(tre0 | tre0); Console.WriteLine(tre0 & tre1); Console.WriteLine(!tre0); //Чтобы сделать учечённные нужно /* * 1. Класс доджен перегружать операторы & и |. * 2. &- и |-методы должны возвращать объект класса * 3. каждый параметр должен представлять собой ссылку на объект класса * 4. класс должен перегружать операторы true и false */ Console.WriteLine(tre0 && tre1); Console.WriteLine(tre0 || tre1); if (tre0 && tre1) { Console.WriteLine("True"); } else { Console.WriteLine("Ложь"); } if (tre0 || tre1) { Console.WriteLine("True"); } else { Console.WriteLine("Ложь"); } //Операторы преобразований /* * две формы операторов преобразования явная и неявная * public static explicit operator тип_результата(исходный_тип v) [return значение;] * public static implict operator тип_результата (исходный_тип v) [return значение;] * тип_результата тип в который нужно выполнить преобразование * исходный тип - объекто подлежащий преобразованию * элемент v значение класса после преобразования * если impluict - автомтоматически * если explict - выполняется при использовании операторов приведения типов */ //неявное //int i3i = new ThreeD(10, 10, 10); //явное int i3i = (int)(new ThreeD(10, 10, 10)); Console.WriteLine(i3i); int per1, per2; per1 = 9; per2 = 9; FailSoftArray2D ma2 = new FailSoftArray2D(per1, per2); for (int z = 7, x = 7; z < 10; z++, x++) { ma2[z, x] = z * x; if (ma2.svError) { Console.WriteLine("fs[" + z + ", " + x + "] вне границ"); } } for (int z = 7, x = 7; z < 10; z++, x++) { Console.WriteLine(ma2[z, x]); if (ma2.svError) { Console.WriteLine("fs[" + z + ", " + x + "] вне границ"); } } //свойства - поле и методы доступа к полю //свойства похожи на инексаторы имя и get set /* * тип имя * { * get * { * //код аксессора чтения поля * } * set * { * //код аксессора записи поля тут есть value * } * } * тип - это тип свойства int, double и т.д * имя - его имя * замето них можно использовать методы */ SimpProp obj = new SimpProp(); Console.WriteLine("Исходное значение ob.myprop: " + obj.mypop); obj.mypop = 10; Console.WriteLine("Присвоенно значение ob.myprop: " + obj.mypop); obj.mypop = -1; Console.WriteLine("-1 ob.myprop: " + obj.mypop); //наследование /* * class имя_производного_класса : имя_базового_класса { // тело класса } */ Triangle tr = new Triangle(); tr.Height = 10; tr.Width = 10; tr.Style = "ravnostoron"; tr.showStype(); tr.showDim(); Console.WriteLine(tr.area()); Rectangle kw = new Rectangle(1, 2); /*kw.Height = 1; * kw.Width = 2;*/ Console.WriteLine("Площадь квадрата " + kw.area()); Console.WriteLine("Виртуальные методы и их определение"); Base baseob = new Base(); Derived1 dOb1 = new Derived1(); Derived2 dOb2 = new Derived2(); Derived3 dOb3 = new Derived3(); Base baseref; //ссылка на базовый подкласс baseref = baseob; baseref.who(); //взависимости от типа объекта выполняется своя версия baseref = dOb1; baseref.who(); baseref = dOb2; baseref.who(); baseref = dOb3; baseref.who(); //первый переопределеннный метод при просмотре иерархии сверху вниз //свойства можно можфицировать с помощью виртуал и оверрайд //Класс обжект Console.WriteLine(baseref.Equals(dOb1)); //определяет является ли вызвывающий объект таким же, как объект, адрисуемый ссылкой ob Console.WriteLine(Equals(baseref, dOb1)); //Определяет является ли объект 1 таким же как и объект 2 Console.WriteLine(baseref.GetHashCode()); //Возвращает хэш-код Console.WriteLine(baseref.GetType()); //получает тип оъекта во время выполнения программы Console.WriteLine(ReferenceEquals(dOb1, dOb2)); //определяет, ссылются ли 1 и 2 на один и тот же объект Console.WriteLine(dOb1.ToString()); //возращает строку, которая описывает объект Console.WriteLine(new MyClass().ToString()); //Возвращение пререопределенного метода из класса object //Приведение к объектному типу и восстановление значения int xt; object obje; xt = 10; obje = xt; // Превращаем xt в объект Console.WriteLine(obje.ToString()); int yt = (int)obje; //обратное превращение Console.WriteLine(yt); //Другой пример //приведение значений к объектному типу возможно при передаче значений методами int xt2; xt2 = 10; Console.WriteLine("Значение x =" + xt2); //переменная xt2 автоматически приводится к объектому типу при передаче в sqr xt2 = Program.sqr(xt2); Console.WriteLine("Значение ч в квадрате рано" + xt2); //ещё пример Console.WriteLine(10.ToString()); //10 представляется как объект и выводится его строковое представдение 10 object[] p1 = new object[9]; //сохраняем int значения for (int i3 = 0; i3 < 3; i3++) { p1[i3] = i3; } //сохраняем double значениия for (int j3 = 3; j3 < 6; j3++) { p1[j3] = (double)j3; } //сохраняем bool, string и char значения p1[6] = true; p1[7] = 'x'; p1[8] = "asf"; for (int bb = 0; bb < p1.Length; bb++) { Console.WriteLine(p1[bb]); } //Интерфейсы /*interface имя * { * тип_возрата имя метода 1(сиксок параметров); * тип_возрата имя метода 2(сиксок параметров); * }*/ /*интерфейс который генерирует ряд чисел * public interface ISeries * { * int getNext(); //Возвращает следующее число ряда * void reset(); //Выполняет перезапуск * void setStat(int x); //устанавливает начальные значения * } */ /*класс который реализует интерефейс * class имя_класса : имя_интерфейса * { * //тело класса * } */ ByTwos o1b1 = new ByTwos(); for (int i3 = 0; i3 < 5; i3++) { Console.WriteLine("Следующее значение равно " + o1b1.getNext()); } Console.WriteLine("\nПереход в исходное состояние."); o1b1.reset(); for (int i3 = 0; i3 < 5; i3++) { Console.WriteLine("Следующее значение равно " + o1b1.getNext()); } Console.WriteLine("\nНачинаем с числа 100."); o1b1.setStart(100); for (int i3 = 0; i3 < 5; i3++) { Console.WriteLine("Следующее значение равно " + o1b1.getNext()); } Console.ReadKey(); //рабочий вариант вызов черехз /* * cd C:\Users\Denis\source\repos\Lernclass\Lernclass\bin\Debug * Lernclass.exe */ if (args.Length < 2) { Console.WriteLine("Использование+ " + "слово1: <<закодировать>>/<<раскодировать>> " + "[слово2... словоN]"); return(1); //возврат значения признака неверного выполнения } if (args[0] != "закодировать" & args[0] != "раскодирвоать") { Console.WriteLine("Первым аргументом должно быть слово " + "\"закодировать\" или \"раскодировать\"."); return(1); // Возврат признака неверного выполнения. } //Кодируем и декодируем сообщение for (int n = 1; n < args.Length; n++) { for (int i2 = 0; i2 < args[n].Length; i2++) { if (args[0] == "закодировать") { Console.Write((char)(args[n][i2] + 1)); ///берём n слово i2 символ } else { Console.Write((char)(args[n][i2] - 1)); } } Console.Write(" "); } Console.WriteLine(); return(0); }
static void Main() { var d1 = new Derived1(); var d2 = new Derived2(); var d3 = new Derived3(); }
public int Method(Derived3 param) { return(++param.field); }
static int Main() { Derived1 d1 = new Derived1(); Derived2 d2 = new Derived2(); Derived3 d3 = new Derived3(); Base b1 = d1; Base b2 = d2; Base rb = new Base(); if (d1.Turn() != 4) { return(1); } if (((IVehicle)d1).Turn() != 4) { return(2); } if (((Base)d2).Turn() != 8) { return(10); } if (((IVehicle)d2).Turn() != 7) { return(3); } if (b2.Turn() != 8) { return(4); } if (((IVehicle)b2).Turn() != 7) { return(5); } if (((IVehicle)rb).Stop() != 2) { return(6); } if (((IVehicle)d1).Stop() != 2) { return(7); } if (((IVehicle)d2).Stop() != 6) { return(8); } if (d3.Walk() != 1) { return(9); } //Console.WriteLine ("TEST {0}", ((IVehicle)b2).Turn ()); return(0); }
public void DiscriminatedUnionThreeUsingThirdToString() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); Assert.AreEqual("{Third:" + d3 + "}", d.ToString()); }
public static void Main() { //Test Derived1 Derived1 d1 = new Derived1(); check(d1.cbase1y() != 3, "Derived1::cbase1y() failed"); check(d1.cbase2() != 4, "Derived1::cbase2() failed"); //Test Derived2 Derived2 d2 = new Derived2(); check(d2.cbase1y() != 6, "Derived2::cbase1y() failed"); check(d2.abase1() != 5, "Derived2::abase1() failed"); //Test Derived3 Derived3 d3 = new Derived3(); check(d3.cbase1y() != 7, "Derived3::cbase1y() failed"); check(d3.cbase2() != 8, "Derived3::cbase2() failed"); check(d3.abase1() != 9, "Derived3::abase1() failed"); //Test Bottom1 Bottom1 b1 = new Bottom1(); check(b1.cbase1y() != 103, "Bottom1::cbase1y() failed"); check(b1.cbase2() != 104, "Bottom1::cbase2() failed"); //Test Bottom2 Bottom2 b2 = new Bottom2(); check(b2.cbase1y() != 206, "Bottom2::cbase1y() failed"); check(b2.abase1() != 205, "Bottom2::abase1() failed"); //Test Bottom3 Bottom3 b3 = new Bottom3(); check(b3.cbase1y() != 307, "Bottom3::cbase1y() failed"); check(b3.cbase2() != 308, "Bottom3::cbase2() failed"); check(b3.abase1() != 309, "Bottom3::abase1() failed"); //Test interfaces from c++ classes CBase1alaqilInterface cb1 = new CBase1(); CBase2alaqilInterface cb2 = new CBase2(); check(cb1.cbase1y() != 1, "CBase1::cbase1y() failed"); check(cb2.cbase2() != 2, "CBase2::cbase2() failed"); //Test nspace class as return value ABase1alaqilInterface ab1 = d3.cloneit(); check(ab1.abase1() != 9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value CBase1alaqilInterface cb6 = d2.cloneit(); CBase2alaqilInterface cb7 = d1.cloneit(); check(cb6.cbase1y() != 6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2() != 4, "Derived1:cbase2() through ABase1 failed"); //Test multi inheritance CBase1alaqilInterface cb3 = new Derived1(); CBase1alaqilInterface cb4 = new Derived3(); CBase2alaqilInterface cb5 = new Derived3(); ABase1alaqilInterface ab6 = new Derived2(); check(cb3.cbase1y() != 3, "Derived1::cbase1y() through CBase1 failed"); check(cb4.cbase1y() != 7, "Derived3::cbase1y() through CBase1 failed"); check(cb5.cbase2() != 8, "Derived3::cbase2() through CBase2 failed"); check(ab6.abase1() != 5, "Derived2::abase1() through ABase1 failed"); //Test base classes as parameter in C# multiple_inheritance_nspace_runme mhar = new multiple_inheritance_nspace_runme(); check(mhar.jcbase1b(d1) != 3, "jcbase1b() through Derived1 as parameter failed"); check(mhar.jcbase1b(d2) != 6, "jcbase1b() through Derived2 as parameter failed"); check(mhar.jcbase1b(d3) != 7, "jcbase1b() through Derived3 as parameter failed"); check(mhar.jcbase2(d1) != 4, "jcbase2() through Derived1 as parameter failed"); check(mhar.jcbase2(d3) != 8, "jcbase2() through Derived3 as parameter failed"); check(mhar.jabase1(d2) != 5, "jabase1() through Derived2 as parameter failed"); check(mhar.jabase1(d3) != 9, "jabase1() through Derived3 as parameter failed"); //Value parameters //Test CBase1 CBase2 as parameters (note slicing for Derived and Bottom classes) check(multiple_inheritance_nspace.InputValCBase1(d1) != 1, "InputValCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(d2) != 1, "InputValCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(d3) != 1, "InputValCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase2(d3) != 2, "InputValCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase2(d1) != 2, "InputValCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(cb1) != 1, "InputValCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase2(cb2) != 2, "InputValCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(b1) != 1, "InputValCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(b2) != 1, "InputValCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase1(b3) != 1, "InputValCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase2(b3) != 2, "InputValCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputValCBase2(b1) != 2, "InputValCBase2(), Bottom1 as a parameter failed"); //Pointer parameters //Test ABase1 as a parameter check(multiple_inheritance_nspace.InputPtrABase1(d2) != 5, "InputPtrABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrABase1(d3) != 9, "InputPtrABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrABase1(b2) != 205, "InputPtrABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrABase1(b3) != 309, "InputPtrABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_nspace.InputPtrCBase1(d1) != 3, "InputPtrCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(d2) != 6, "InputPtrCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(d3) != 7, "InputPtrCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase2(d3) != 8, "InputPtrCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase2(d1) != 4, "InputPtrCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(cb1) != 1, "InputPtrCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase2(cb2) != 2, "InputPtrCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(b1) != 103, "InputPtrCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(b2) != 206, "InputPtrCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase1(b3) != 307, "InputPtrCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase2(b3) != 308, "InputPtrCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputPtrCBase2(b1) != 104, "InputPtrCBase2(), Bottom1 as a parameter failed"); //Reference parameters //Test ABase1 as a parameter check(multiple_inheritance_nspace.InputRefABase1(d2) != 5, "InputRefABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputRefABase1(d3) != 9, "InputRefABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputRefABase1(b2) != 205, "InputRefABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputRefABase1(b3) != 309, "InputRefABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_nspace.InputRefCBase1(d1) != 3, "InputRefCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(d2) != 6, "InputRefCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(d3) != 7, "InputRefCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase2(d3) != 8, "InputRefCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase2(d1) != 4, "InputRefCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(cb1) != 1, "InputRefCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase2(cb2) != 2, "InputRefCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(b1) != 103, "InputRefCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(b2) != 206, "InputRefCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase1(b3) != 307, "InputRefCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase2(b3) != 308, "InputRefCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputRefCBase2(b1) != 104, "InputRefCBase2(), Bottom1 as a parameter failed"); //Const reference pointer parameters //Test ABase1 as a parameter check(multiple_inheritance_nspace.InputCPtrRefABase1(d2) != 5, "InputCPtrRefABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefABase1(d3) != 9, "InputCPtrRefABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefABase1(b2) != 205, "InputCPtrRefABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefABase1(b3) != 309, "InputCPtrRefABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_nspace.InputCPtrRefCBase1(d1) != 3, "InputCPtrRefCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(d2) != 6, "InputCPtrRefCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(d3) != 7, "InputCPtrRefCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase2(d3) != 8, "InputCPtrRefCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase2(d1) != 4, "InputCPtrRefCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(cb1) != 1, "InputCPtrRefCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase2(cb2) != 2, "InputCPtrRefCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(b1) != 103, "InputCPtrRefCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(b2) != 206, "InputCPtrRefCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase1(b3) != 307, "InputCPtrRefCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase2(b3) != 308, "InputCPtrRefCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_nspace.InputCPtrRefCBase2(b1) != 104, "InputCPtrRefCBase2(), Bottom1 as a parameter failed"); //Derived classes as parameters check(multiple_inheritance_nspace.InputValDerived1(d1) != 3 + 4, "InputValDerived1() failed"); check(multiple_inheritance_nspace.InputValDerived2(d2) != 6 + 5, "InputValDerived2() failed"); check(multiple_inheritance_nspace.InputValDerived3(d3) != 7 + 8 + 9, "InputValDerived3() failed"); check(multiple_inheritance_nspace.InputRefDerived1(d1) != 3 + 4, "InputRefDerived1() failed"); check(multiple_inheritance_nspace.InputRefDerived2(d2) != 6 + 5, "InputRefDerived2() failed"); check(multiple_inheritance_nspace.InputRefDerived3(d3) != 7 + 8 + 9, "InputRefDerived3() failed"); check(multiple_inheritance_nspace.InputPtrDerived1(d1) != 3 + 4, "InputPtrDerived1() failed"); check(multiple_inheritance_nspace.InputPtrDerived2(d2) != 6 + 5, "InputPtrDerived2() failed"); check(multiple_inheritance_nspace.InputPtrDerived3(d3) != 7 + 8 + 9, "InputPtrDerived3() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived1(d1) != 3 + 4, "InputCPtrRefDerived1() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived2(d2) != 6 + 5, "InputCPtrRefDerived2() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived3(d3) != 7 + 8 + 9, "InputCPtrRefDerived3() failed"); //Bottom classes as Derived parameters check(multiple_inheritance_nspace.InputValDerived1(b1) != 3 + 4, "InputValDerived1() failed"); check(multiple_inheritance_nspace.InputValDerived2(b2) != 6 + 5, "InputValDerived2() failed"); check(multiple_inheritance_nspace.InputValDerived3(b3) != 7 + 8 + 9, "InputValDerived3() failed"); check(multiple_inheritance_nspace.InputRefDerived1(b1) != 103 + 104, "InputRefDerived1() failed"); check(multiple_inheritance_nspace.InputRefDerived2(b2) != 206 + 205, "InputRefDerived2() failed"); check(multiple_inheritance_nspace.InputRefDerived3(b3) != 307 + 308 + 309, "InputRefDerived3() failed"); check(multiple_inheritance_nspace.InputPtrDerived1(b1) != 103 + 104, "InputPtrDerived1() failed"); check(multiple_inheritance_nspace.InputPtrDerived2(b2) != 206 + 205, "InputPtrDerived2() failed"); check(multiple_inheritance_nspace.InputPtrDerived3(b3) != 307 + 308 + 309, "InputPtrDerived3() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived1(b1) != 103 + 104, "InputCPtrRefDerived1() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived2(b2) != 206 + 205, "InputCPtrRefDerived2() failed"); check(multiple_inheritance_nspace.InputCPtrRefDerived3(b3) != 307 + 308 + 309, "InputCPtrRefDerived3() failed"); //Bottom classes as Bottom parameters check(multiple_inheritance_nspace.InputValBottom1(b1) != 103 + 104, "InputValBottom1() failed"); check(multiple_inheritance_nspace.InputValBottom2(b2) != 206 + 205, "InputValBottom2() failed"); check(multiple_inheritance_nspace.InputValBottom3(b3) != 307 + 308 + 309, "InputValBottom3() failed"); check(multiple_inheritance_nspace.InputRefBottom1(b1) != 103 + 104, "InputRefBottom1() failed"); check(multiple_inheritance_nspace.InputRefBottom2(b2) != 206 + 205, "InputRefBottom2() failed"); check(multiple_inheritance_nspace.InputRefBottom3(b3) != 307 + 308 + 309, "InputRefBottom3() failed"); check(multiple_inheritance_nspace.InputPtrBottom1(b1) != 103 + 104, "InputPtrBottom1() failed"); check(multiple_inheritance_nspace.InputPtrBottom2(b2) != 206 + 205, "InputPtrBottom2() failed"); check(multiple_inheritance_nspace.InputPtrBottom3(b3) != 307 + 308 + 309, "InputPtrBottom3() failed"); check(multiple_inheritance_nspace.InputCPtrRefBottom1(b1) != 103 + 104, "InputCPtrRefBottom1() failed"); check(multiple_inheritance_nspace.InputCPtrRefBottom2(b2) != 206 + 205, "InputCPtrRefBottom2() failed"); check(multiple_inheritance_nspace.InputCPtrRefBottom3(b3) != 307 + 308 + 309, "InputCPtrRefBottom3() failed"); // Return pointers check(multiple_inheritance_nspace.MakePtrDerived1_CBase1().cbase1y() != 3, "MakePtrDerived1_CBase1 failed"); check(multiple_inheritance_nspace.MakePtrDerived1_CBase2().cbase2() != 4, "MakePtrDerived1_CBase2 failed"); check(multiple_inheritance_nspace.MakePtrDerived2_CBase1().cbase1y() != 6, "MakePtrDerived2_CBase1 failed"); check(multiple_inheritance_nspace.MakePtrDerived2_ABase1().abase1() != 5, "MakePtrDerived2_ABase1 failed"); check(multiple_inheritance_nspace.MakePtrDerived3_ABase1().abase1() != 9, "MakePtrDerived3_ABase1 failed"); check(multiple_inheritance_nspace.MakePtrDerived3_CBase1().cbase1y() != 7, "MakePtrDerived3_CBase1 failed"); check(multiple_inheritance_nspace.MakePtrDerived3_CBase2().cbase2() != 8, "MakePtrDerived3_CBase2 failed"); // Return references check(multiple_inheritance_nspace.MakeRefDerived1_CBase1().cbase1y() != 3, "MakeRefDerived1_CBase1 failed"); check(multiple_inheritance_nspace.MakeRefDerived1_CBase2().cbase2() != 4, "MakeRefDerived1_CBase2 failed"); check(multiple_inheritance_nspace.MakeRefDerived2_CBase1().cbase1y() != 6, "MakeRefDerived2_CBase1 failed"); check(multiple_inheritance_nspace.MakeRefDerived2_ABase1().abase1() != 5, "MakeRefDerived2_ABase1 failed"); check(multiple_inheritance_nspace.MakeRefDerived3_ABase1().abase1() != 9, "MakeRefDerived3_ABase1 failed"); check(multiple_inheritance_nspace.MakeRefDerived3_CBase1().cbase1y() != 7, "MakeRefDerived3_CBase1 failed"); check(multiple_inheritance_nspace.MakeRefDerived3_CBase2().cbase2() != 8, "MakeRefDerived3_CBase2 failed"); // Return by value (sliced objects) check(multiple_inheritance_nspace.MakeValDerived1_CBase1().cbase1y() != 1, "MakeValDerived1_CBase1 failed"); check(multiple_inheritance_nspace.MakeValDerived1_CBase2().cbase2() != 2, "MakeValDerived1_CBase2 failed"); check(multiple_inheritance_nspace.MakeValDerived2_CBase1().cbase1y() != 1, "MakeValDerived2_CBase1 failed"); check(multiple_inheritance_nspace.MakeValDerived3_CBase1().cbase1y() != 1, "MakeValDerived3_CBase1 failed"); check(multiple_inheritance_nspace.MakeValDerived3_CBase2().cbase2() != 2, "MakeValDerived3_CBase2 failed"); }
public void DiscriminatedUnionThreeUsingThirdCreateThirdWorks() { IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(new Derived3()); Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> dd = d.CreateThird(d3); Assert.AreNotSame(d, dd); Assert.AreNotSame(d.Value, dd.Value); Assert.AreSame(d3, dd.Value); Assert.IsTrue(dd.IsThird); }
public void DiscriminatedUnionThreeUsingThirdIsThirdWorking() { Derived3 d3 = new Derived3(); IDiscriminatedUnion<Base, Derived1, Derived2, Derived3> d = DiscriminatedUnion.Third<Base, Derived1, Derived2, Derived3>(d3); Assert.IsTrue(d.IsThird); }
override public object runOneIteration() { int number = random.Next(100); var obj; if (number == 0) { obj = new Derived0(); } else if (number == 1) { obj = new Derived1(); } else if (number == 2) { obj = new Derived2(); } else if (number == 3) { obj = new Derived3(); } else if (number == 4) { obj = new Derived4(); } else if (number == 5) { obj = new Derived5(); } else if (number == 6) { obj = new Derived6(); } else if (number == 7) { obj = new Derived7(); } else if (number == 8) { obj = new Derived8(); } else if (number == 9) { obj = new Derived9(); } else if (number == 10) { obj = new Derived10(); } else if (number == 11) { obj = new Derived11(); } else if (number == 12) { obj = new Derived12(); } else if (number == 13) { obj = new Derived13(); } else if (number == 14) { obj = new Derived14(); } else if (number == 15) { obj = new Derived15(); } else if (number == 16) { obj = new Derived16(); } else if (number == 17) { obj = new Derived17(); } else if (number == 18) { obj = new Derived18(); } else if (number == 19) { obj = new Derived19(); } else if (number == 20) { obj = new Derived20(); } else if (number == 21) { obj = new Derived21(); } else if (number == 22) { obj = new Derived22(); } else if (number == 23) { obj = new Derived23(); } else if (number == 24) { obj = new Derived24(); } else if (number == 25) { obj = new Derived25(); } else if (number == 26) { obj = new Derived26(); } else if (number == 27) { obj = new Derived27(); } else if (number == 28) { obj = new Derived28(); } else if (number == 29) { obj = new Derived29(); } else if (number == 30) { obj = new Derived30(); } else if (number == 31) { obj = new Derived31(); } else if (number == 32) { obj = new Derived32(); } else if (number == 33) { obj = new Derived33(); } else if (number == 34) { obj = new Derived34(); } else if (number == 35) { obj = new Derived35(); } else if (number == 36) { obj = new Derived36(); } else if (number == 37) { obj = new Derived37(); } else if (number == 38) { obj = new Derived38(); } else if (number == 39) { obj = new Derived39(); } else if (number == 40) { obj = new Derived40(); } else if (number == 41) { obj = new Derived41(); } else if (number == 42) { obj = new Derived42(); } else if (number == 43) { obj = new Derived43(); } else if (number == 44) { obj = new Derived44(); } else if (number == 45) { obj = new Derived45(); } else if (number == 46) { obj = new Derived46(); } else if (number == 47) { obj = new Derived47(); } else if (number == 48) { obj = new Derived48(); } else if (number == 49) { obj = new Derived49(); } else if (number == 50) { obj = new Derived50(); } else if (number == 51) { obj = new Derived51(); } else if (number == 52) { obj = new Derived52(); } else if (number == 53) { obj = new Derived53(); } else if (number == 54) { obj = new Derived54(); } else if (number == 55) { obj = new Derived55(); } else if (number == 56) { obj = new Derived56(); } else if (number == 57) { obj = new Derived57(); } else if (number == 58) { obj = new Derived58(); } else if (number == 59) { obj = new Derived59(); } else if (number == 60) { obj = new Derived60(); } else if (number == 61) { obj = new Derived61(); } else if (number == 62) { obj = new Derived62(); } else if (number == 63) { obj = new Derived63(); } else if (number == 64) { obj = new Derived64(); } else if (number == 65) { obj = new Derived65(); } else if (number == 66) { obj = new Derived66(); } else if (number == 67) { obj = new Derived67(); } else if (number == 68) { obj = new Derived68(); } else if (number == 69) { obj = new Derived69(); } else if (number == 70) { obj = new Derived70(); } else if (number == 71) { obj = new Derived71(); } else if (number == 72) { obj = new Derived72(); } else if (number == 73) { obj = new Derived73(); } else if (number == 74) { obj = new Derived74(); } else if (number == 75) { obj = new Derived75(); } else if (number == 76) { obj = new Derived76(); } else if (number == 77) { obj = new Derived77(); } else if (number == 78) { obj = new Derived78(); } else if (number == 79) { obj = new Derived79(); } else if (number == 80) { obj = new Derived80(); } else if (number == 81) { obj = new Derived81(); } else if (number == 82) { obj = new Derived82(); } else if (number == 83) { obj = new Derived83(); } else if (number == 84) { obj = new Derived84(); } else if (number == 85) { obj = new Derived85(); } else if (number == 86) { obj = new Derived86(); } else if (number == 87) { obj = new Derived87(); } else if (number == 88) { obj = new Derived88(); } else if (number == 89) { obj = new Derived89(); } else if (number == 90) { obj = new Derived90(); } else if (number == 91) { obj = new Derived91(); } else if (number == 92) { obj = new Derived92(); } else if (number == 93) { obj = new Derived93(); } else if (number == 94) { obj = new Derived94(); } else if (number == 95) { obj = new Derived95(); } else if (number == 96) { obj = new Derived96(); } else if (number == 97) { obj = new Derived97(); } else if (number == 98) { obj = new Derived98(); } else { obj = new Derived99(); } return(this.runWithNoInference(obj)); }
public static void Main() { //Test Derived1 Derived1 d1=new Derived1(); check(d1.cbase1y()!=3, "Derived1::cbase1y() failed"); check(d1.cbase2()!=4, "Derived1::cbase2() failed"); //Test Derived2 Derived2 d2=new Derived2(); check(d2.cbase1y()!=6, "Derived2::cbase1y() failed"); check(d2.abase1()!=5, "Derived2::abase1() failed"); //Test Derived3 Derived3 d3=new Derived3(); check(d3.cbase1y()!=7, "Derived3::cbase1y() failed"); check(d3.cbase2()!=8, "Derived3::cbase2() failed"); check(d3.abase1()!=9, "Derived3::abase1() failed"); //Test Bottom1 Bottom1 b1=new Bottom1(); check(b1.cbase1y()!=103, "Bottom1::cbase1y() failed"); check(b1.cbase2()!=104, "Bottom1::cbase2() failed"); //Test Bottom2 Bottom2 b2=new Bottom2(); check(b2.cbase1y()!=206, "Bottom2::cbase1y() failed"); check(b2.abase1()!=205, "Bottom2::abase1() failed"); //Test Bottom3 Bottom3 b3=new Bottom3(); check(b3.cbase1y()!=307, "Bottom3::cbase1y() failed"); check(b3.cbase2()!=308, "Bottom3::cbase2() failed"); check(b3.abase1()!=309, "Bottom3::abase1() failed"); //Test interfaces from c++ classes CBase1 cb1=new CBase1SwigImpl(); CBase2 cb2=new CBase2SwigImpl(); check(cb1.cbase1y()!=1, "CBase1::cbase1y() failed"); check(cb2.cbase2()!=2, "CBase2::cbase2() failed"); //Test abstract class as return value ABase1 ab1=d3.cloneit(); check(ab1.abase1()!=9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value CBase1 cb6=d2.cloneit(); CBase2 cb7=d1.cloneit(); check(cb6.cbase1y()!=6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2()!=4, "Derived1:cbase2() through ABase1 failed"); //Test multi inheritance CBase1 cb3=new Derived1(); CBase1 cb4=new Derived3(); CBase2 cb5=new Derived3(); ABase1 ab6=new Derived2(); check(cb3.cbase1y()!=3, "Derived1::cbase1y() through CBase1 failed"); check(cb4.cbase1y()!=7, "Derived3::cbase1y() through CBase1 failed"); check(cb5.cbase2()!=8, "Derived3::cbase2() through CBase2 failed"); check(ab6.abase1()!=5, "Derived2::abase1() through ABase1 failed"); //Test base classes as parameter in C# multiple_inheritance_abstract_runme mhar=new multiple_inheritance_abstract_runme(); check(mhar.jcbase1b(d1)!=3, "jcbase1b() through Derived1 as parameter failed"); check(mhar.jcbase1b(d2)!=6, "jcbase1b() through Derived2 as parameter failed"); check(mhar.jcbase1b(d3)!=7, "jcbase1b() through Derived3 as parameter failed"); check(mhar.jcbase2(d1)!=4, "jcbase2() through Derived1 as parameter failed"); check(mhar.jcbase2(d3)!=8, "jcbase2() through Derived3 as parameter failed"); check(mhar.jabase1(d2)!=5, "jabase1() through Derived2 as parameter failed"); check(mhar.jabase1(d3)!=9, "jabase1() through Derived3 as parameter failed"); //Value parameters //Test CBase1 CBase2 as parameters (note slicing for Derived and Bottom classes) check(multiple_inheritance_abstract.InputValCBase1(d1)!=1, "InputValCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(d2)!=1, "InputValCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(d3)!=1, "InputValCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase2(d3)!=2, "InputValCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase2(d1)!=2, "InputValCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(cb1)!=1, "InputValCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase2(cb2)!=2, "InputValCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(b1)!=1, "InputValCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(b2)!=1, "InputValCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase1(b3)!=1, "InputValCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase2(b3)!=2, "InputValCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputValCBase2(b1)!=2, "InputValCBase2(), Bottom1 as a parameter failed"); //Pointer parameters //Test ABase1 as a parameter check(multiple_inheritance_abstract.InputPtrABase1(d2)!=5, "InputPtrABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrABase1(d3)!=9, "InputPtrABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrABase1(b2)!=205, "InputPtrABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrABase1(b3)!=309, "InputPtrABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_abstract.InputPtrCBase1(d1)!=3, "InputPtrCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(d2)!=6, "InputPtrCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(d3)!=7, "InputPtrCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase2(d3)!=8, "InputPtrCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase2(d1)!=4, "InputPtrCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(cb1)!=1, "InputPtrCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase2(cb2)!=2, "InputPtrCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(b1)!=103, "InputPtrCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(b2)!=206, "InputPtrCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase1(b3)!=307, "InputPtrCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase2(b3)!=308, "InputPtrCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputPtrCBase2(b1)!=104, "InputPtrCBase2(), Bottom1 as a parameter failed"); //Reference parameters //Test ABase1 as a parameter check(multiple_inheritance_abstract.InputRefABase1(d2)!=5, "InputRefABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputRefABase1(d3)!=9, "InputRefABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputRefABase1(b2)!=205, "InputRefABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputRefABase1(b3)!=309, "InputRefABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_abstract.InputRefCBase1(d1)!=3, "InputRefCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(d2)!=6, "InputRefCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(d3)!=7, "InputRefCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase2(d3)!=8, "InputRefCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase2(d1)!=4, "InputRefCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(cb1)!=1, "InputRefCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase2(cb2)!=2, "InputRefCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(b1)!=103, "InputRefCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(b2)!=206, "InputRefCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase1(b3)!=307, "InputRefCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase2(b3)!=308, "InputRefCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputRefCBase2(b1)!=104, "InputRefCBase2(), Bottom1 as a parameter failed"); //Const reference pointer parameters //Test ABase1 as a parameter check(multiple_inheritance_abstract.InputCPtrRefABase1(d2)!=5, "InputCPtrRefABase1() through Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefABase1(d3)!=9, "InputCPtrRefABase1() through Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefABase1(b2)!=205, "InputCPtrRefABase1() through Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefABase1(b3)!=309, "InputCPtrRefABase1() through Bottom3 as a parameter failed"); //Test CBase1 CBase2 as parameters check(multiple_inheritance_abstract.InputCPtrRefCBase1(d1)!=3, "InputCPtrRefCBase1(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(d2)!=6, "InputCPtrRefCBase1(), Derived2 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(d3)!=7, "InputCPtrRefCBase1(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase2(d3)!=8, "InputCPtrRefCBase2(), Derived3 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase2(d1)!=4, "InputCPtrRefCBase2(), Derived1 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(cb1)!=1, "InputCPtrRefCBase1(), CBase1 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase2(cb2)!=2, "InputCPtrRefCBase2(), CBase2 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(b1)!=103, "InputCPtrRefCBase1(), Bottom1 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(b2)!=206, "InputCPtrRefCBase1(), Bottom2 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase1(b3)!=307, "InputCPtrRefCBase1(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase2(b3)!=308, "InputCPtrRefCBase2(), Bottom3 as a parameter failed"); check(multiple_inheritance_abstract.InputCPtrRefCBase2(b1)!=104, "InputCPtrRefCBase2(), Bottom1 as a parameter failed"); //Derived classes as parameters check(multiple_inheritance_abstract.InputValDerived1(d1)!=3+4, "InputValDerived1() failed"); check(multiple_inheritance_abstract.InputValDerived2(d2)!=6+5, "InputValDerived2() failed"); check(multiple_inheritance_abstract.InputValDerived3(d3)!=7+8+9, "InputValDerived3() failed"); check(multiple_inheritance_abstract.InputRefDerived1(d1)!=3+4, "InputRefDerived1() failed"); check(multiple_inheritance_abstract.InputRefDerived2(d2)!=6+5, "InputRefDerived2() failed"); check(multiple_inheritance_abstract.InputRefDerived3(d3)!=7+8+9, "InputRefDerived3() failed"); check(multiple_inheritance_abstract.InputPtrDerived1(d1)!=3+4, "InputPtrDerived1() failed"); check(multiple_inheritance_abstract.InputPtrDerived2(d2)!=6+5, "InputPtrDerived2() failed"); check(multiple_inheritance_abstract.InputPtrDerived3(d3)!=7+8+9, "InputPtrDerived3() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived1(d1)!=3+4, "InputCPtrRefDerived1() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived2(d2)!=6+5, "InputCPtrRefDerived2() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived3(d3)!=7+8+9, "InputCPtrRefDerived3() failed"); //Bottom classes as Derived parameters check(multiple_inheritance_abstract.InputValDerived1(b1)!=3+4, "InputValDerived1() failed"); check(multiple_inheritance_abstract.InputValDerived2(b2)!=6+5, "InputValDerived2() failed"); check(multiple_inheritance_abstract.InputValDerived3(b3)!=7+8+9, "InputValDerived3() failed"); check(multiple_inheritance_abstract.InputRefDerived1(b1)!=103+104, "InputRefDerived1() failed"); check(multiple_inheritance_abstract.InputRefDerived2(b2)!=206+205, "InputRefDerived2() failed"); check(multiple_inheritance_abstract.InputRefDerived3(b3)!=307+308+309, "InputRefDerived3() failed"); check(multiple_inheritance_abstract.InputPtrDerived1(b1)!=103+104, "InputPtrDerived1() failed"); check(multiple_inheritance_abstract.InputPtrDerived2(b2)!=206+205, "InputPtrDerived2() failed"); check(multiple_inheritance_abstract.InputPtrDerived3(b3)!=307+308+309, "InputPtrDerived3() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived1(b1)!=103+104, "InputCPtrRefDerived1() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived2(b2)!=206+205, "InputCPtrRefDerived2() failed"); check(multiple_inheritance_abstract.InputCPtrRefDerived3(b3)!=307+308+309, "InputCPtrRefDerived3() failed"); //Bottom classes as Bottom parameters check(multiple_inheritance_abstract.InputValBottom1(b1)!=103+104, "InputValBottom1() failed"); check(multiple_inheritance_abstract.InputValBottom2(b2)!=206+205, "InputValBottom2() failed"); check(multiple_inheritance_abstract.InputValBottom3(b3)!=307+308+309, "InputValBottom3() failed"); check(multiple_inheritance_abstract.InputRefBottom1(b1)!=103+104, "InputRefBottom1() failed"); check(multiple_inheritance_abstract.InputRefBottom2(b2)!=206+205, "InputRefBottom2() failed"); check(multiple_inheritance_abstract.InputRefBottom3(b3)!=307+308+309, "InputRefBottom3() failed"); check(multiple_inheritance_abstract.InputPtrBottom1(b1)!=103+104, "InputPtrBottom1() failed"); check(multiple_inheritance_abstract.InputPtrBottom2(b2)!=206+205, "InputPtrBottom2() failed"); check(multiple_inheritance_abstract.InputPtrBottom3(b3)!=307+308+309, "InputPtrBottom3() failed"); check(multiple_inheritance_abstract.InputCPtrRefBottom1(b1)!=103+104, "InputCPtrRefBottom1() failed"); check(multiple_inheritance_abstract.InputCPtrRefBottom2(b2)!=206+205, "InputCPtrRefBottom2() failed"); check(multiple_inheritance_abstract.InputCPtrRefBottom3(b3)!=307+308+309, "InputCPtrRefBottom3() failed"); // Return pointers check(multiple_inheritance_abstract.MakePtrDerived1_CBase1().cbase1y()!=3, "MakePtrDerived1_CBase1 failed"); check(multiple_inheritance_abstract.MakePtrDerived1_CBase2().cbase2()!=4, "MakePtrDerived1_CBase2 failed"); check(multiple_inheritance_abstract.MakePtrDerived2_CBase1().cbase1y()!=6, "MakePtrDerived2_CBase1 failed"); check(multiple_inheritance_abstract.MakePtrDerived2_ABase1().abase1()!=5, "MakePtrDerived2_ABase1 failed"); check(multiple_inheritance_abstract.MakePtrDerived3_ABase1().abase1()!=9, "MakePtrDerived3_ABase1 failed"); check(multiple_inheritance_abstract.MakePtrDerived3_CBase1().cbase1y()!=7, "MakePtrDerived3_CBase1 failed"); check(multiple_inheritance_abstract.MakePtrDerived3_CBase2().cbase2()!=8, "MakePtrDerived3_CBase2 failed"); // Return references check(multiple_inheritance_abstract.MakeRefDerived1_CBase1().cbase1y()!=3, "MakeRefDerived1_CBase1 failed"); check(multiple_inheritance_abstract.MakeRefDerived1_CBase2().cbase2()!=4, "MakeRefDerived1_CBase2 failed"); check(multiple_inheritance_abstract.MakeRefDerived2_CBase1().cbase1y()!=6, "MakeRefDerived2_CBase1 failed"); check(multiple_inheritance_abstract.MakeRefDerived2_ABase1().abase1()!=5, "MakeRefDerived2_ABase1 failed"); check(multiple_inheritance_abstract.MakeRefDerived3_ABase1().abase1()!=9, "MakeRefDerived3_ABase1 failed"); check(multiple_inheritance_abstract.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed"); check(multiple_inheritance_abstract.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed"); // Return by value (sliced objects) check(multiple_inheritance_abstract.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed"); check(multiple_inheritance_abstract.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed"); check(multiple_inheritance_abstract.MakeValDerived2_CBase1().cbase1y()!=1, "MakeValDerived2_CBase1 failed"); check(multiple_inheritance_abstract.MakeValDerived3_CBase1().cbase1y()!=1, "MakeValDerived3_CBase1 failed"); check(multiple_inheritance_abstract.MakeValDerived3_CBase2().cbase2()!=2, "MakeValDerived3_CBase2 failed"); }