LINUX.ORG.RU

Сообщения alysnix

 

челендж - спаси дерево!

Форум — Development

допустим у вас есть визуальное дерево(типа контрол из ближайшего оконного фреймворка), как приемник иерархических данных, и поставщик таких данных, что выдает данные в виде некоего абстрактного иерархического формата, хоть текстового, хоть бинарного.

источник данных не умеет генерить ивенты - типа «удалить узел», «переставить узел из одного парента в другой» и тепе. он умеет только выдавать все дерево.

но такой криндж для приемника не подходит - чисто в лоб придется удалять все визуальное дерево и рисовать новое, на основе новых данных.

ищется способ быстро найти дифф в данных между приемником и источником, и аккуратно подправлять дерево-приемник, не удаляя его, с минимальным количеством изменений.

я такой алгоритм нарисовал, оно работает. но возможно есть и получше.

в качестве модельного примера можно рассмотреть струкутру файловой системы и виз. дерево ее отражающее, но с условием, что никаких ивентов от фс быть не может.

 

alysnix
()

окно ввода текста должно быть с темным фоном

Форум — Linux-org-ru

раз уж у форума темная тема, то и окно ввода текста должно быть с темным фоном, а то рвет глаза

 

alysnix
()

блок питания - Enhance Electronics ENP-5625A и неработающий suspend

Форум — Linux-hardware

победил тут одну проблемку - имею корпус - http://www.morex.com.ru/obzor_morex_6610.shtml

в нем штатный блок питания - Enhance Electronics ENP-5625A. по нему имеются претензии.

  1. заметно жужжит с частотой герц в 50. видимо жужжит какой-то дроссель. буду чинить.

мать - AsRock H77M-ITX.

  1. не работает пробуждение из suspend режима. при таком побуждении плата потребляет говорят значительный ток по шине 5в от дежурного источника, а он видимо слабый в данном БП, и БП или сам уходит в перезапуск, или мать уходит в перезапуск(скорее БП).

победил установкой старого кондового БП.

ос - Ubuntu 20.04

ps на всякий случай: если кому придется менять БП у такого корпуса, учтите что там, в силу расположения БП и матери, нужны БП с длинными шлейфами разьемов питания матери. на родном БП длина этих шлейфов - 50 см.

 

alysnix
()

некие странности wxWIdgets под gnome3

Форум — Development

моя штуковина написана wxWidgets, которые юзали gnome 2. обновился до последней wxWidgets и и сбилдил ее под gnome3… возникло несколько баг, в силу идейных подвижек внутри wxWIdgets, которые я быстро устранил, но осталась парочка злых, причину которых поймать не удается.

wxTreeCntl, вдруг в некотрых использованиях забыл про автоскролл, то есть стрелкой вверх/вниз гонишь фокус элемента по дереву, и он выходит за границы контрола, и автоскролл(дерево не едет само вверх/вниз) не происходит. но в одном таки использовании автоскролл есть!, а раньше было нормально везде.

и вторая бага - (моя аппа это IDE), я запускаю из моей IDE отладчик gdb и запускаю под ним прогу на wxWidgets. если брикпоинт стоит в обработчике ивентов wxWidgets, то останов проиходит, но отлаживаемая аппа похоже не отдает фокус мыши. то есть клавиатура работает, но мышь - нет.

вопрос. кто нибудь наблюдал нечто похожее при переходе от gnome2 к gnome3 где либо? и в wxWidgets в частности?

то есть, там похоже какая-то заковыка в ивентах, их порядке обработки, типа того. потому что и скролл и фокус - это чисто ивенты, то ли wxWidgets, то ли гнома.

 ,

alysnix
()

гугл докс портит документы?

Форум — Talks

лежал вот у меня с полгодика большой док, что я делал прямо в гуглдоксах на гугле… открыл его намедни, а он попорчен. слетело форматирование, части картинок нет.

это санкции гугла против российских пользователей или мерещится всяко?

я чисто предупредил,на всякий случай. редактировать надо у себя.

 

alysnix
()

самодельный минилисп

Форум — Development

нарисовал себе самодельный минилисп -

переделал лисповые имена на приличные, чтоб хоть конвенциальным процедурным программистом читалось

пример тест файла

(module TestModule)
(import Module1 Module2 Module3)

(fun TITLE(ftext)
	(comment "print title title")
	(fun line()	(println "\n#####################################"))
	(line)(print ftext)(line) )

(TITLE "BEGIN TESTS")

(fun print_mem () (println "mem used " (mem-used) " bytes"))

(print_mem)

;;//======================================
(fun print_sym_count () 
	(println "Sybols count: " (list-length ^Symbols)))

(fun print_symbols()
	(comment "print registered symbols")
	(println "Registered Symbols ======\n"
				(symbols)
				"\n ======= end of symbols")
	(print_sym_count))
	
(print_symbols); ///print predefined symbols
(print_sym_count)

;;//===========================

(println (not t) "not t")
(println (not ()) "not ()")

;;(halt)

;;//================================
;; /// operators
(define _ " ")
(fun ++ (fval) (inc fval))
(fun -- (fval) (dec fval))

;;///arithmetic shift 

;;================================
(enum MyEnum (a1 . "abs") (a2 . "ddd") (a3 . "test") )
(enum MyEnum1 (a1 . 10) (a2 . 20) (a3 . 30) )

;;//(var i MyEnum1 [a1] )

(class TestClass
	(var x 0)
	(var y 0)
	(var z 0)
	
	(var 
		(a int 0) 
		(b int 0) 
		(c int 0)
	)
	 
	(fun print_() ( print x y z))
	(override fff() 100)
	(ctor () ())
	(ctor (fint) (setq x fint))
)

(const t 100)

;//================================
(fun read(fstream) (println "read go") 0)
(fun write(fstream) 1)
(read 100)

;//================================
(var xx 10)
(println "test increment: ++10 is:" (++ xx))

;//=================================
(fun sqr(x) (* x x)) 
(println "sqr of 7 = " (sqr 7))

(var 	yy 16)  (println "shr 16 = " (shr yy))
(setq yy 16)  (println "shl 16 = " (shl yy))

(var _name0 "sidor")
(var _name1 "sidorov")
(println (+ "author: " _name0 _ _name1))
(var lline (+ "new author: " _name0 _ _name1))
(println lline)
(println "a" _ "b" _ "c")

;//==================================
(fun check (fexpr ftext) (	println ftext ":" fexpr) )

(fun assert(fbool ftext)(
	if (not fbool) (println ftext)))

(fun check_lambda ()
	(var llx (lambda () (print "it is lambda!!!")))
	(llx)
)
	
(check_lambda)	

(assert (< 100 1) "assert works!!!")

(check (< 11 10) "must be false")
(check (> 11 10) "must be true")
(check (eq _name0 "vova") "must be true")

;//===================================
(fun test_loop (flim)
	(var li flim) (while (> li 0) (print li " ") (dec li))
	;;(var i 0) (while (< i flim) (print i " ") (inc i))
)

(fun do_test (fname ftestfun)
	(println fname) ftestfun)

(do_test "SOME_TEST: "  (test_loop 10) )
;(do_test "SOME_TEST: " ())

(fun check_order ()
	(comment "check order")
	(print "test_order: ")
	(print "1 ")(print "2 ")(print "3 \n"))

(check_order)

(println "test 1") (test_loop 5)
(println "test 2") (test_loop 3)
;//===================================

;;(print_symbols)
(TITLE " END TESTS")

(print_mem) 
(check (garbage-collect) "garbage collect") 
(print_mem)

(print "\nenter char to exit >") (getchar)
;;//(print "\nenter char to exit >") (getchar)

 

alysnix
()

удаленный разнорабочий по с++.

Форум — Job

могу удаленно и разно работать на с++, linux, git, cmake,. расположение - Москва, юго-запад. готов на занятость порядка 8 часов в день.

зарплатные ожидания - средние по отрасли.

 ,

alysnix
()

ищется годный софт для подготовки мануалов, документации. плюс истории успеха.

Форум — Development

короче, ищется линукс, либо онлайн софт для написания документации(в свободном стиле, не гост)…ну кроме очевидных аналогов ворда от майкрософта.

 

alysnix
()

mozilla thunderbird слишком долго соединяется с gmail.com

Форум — General

на убунте 20.04 тандерберд слишком долго пытается соединиться c gmail, чтобы вычитать почту при запуске. порядка минуты, потом выскакивает по какому-то своему таймауту и почту берет нормально.

поставил эволюшн - там картина аналогична.

но с mail.ru или yandex.ru забирают почту сразу, оба клиента.

причем уже повторные взятия почты с гмайла идут быстро, опять же в обоих клиентах, то есть проблема в gmail.

у кого-нибудь такое набллюдается?

 

alysnix
()

SecureBoot инсталляции убунты.

Форум — Linux-install

Всем привет. Надо сделать секурный бут инсталляции убунты под tianocore uefi. на qemu. Ну несекурный бут там простой, а вот как делать секурный вообще не понятно. tianocore требует ключей и всяких там сертификатов, которые непонятно где брать. кто-то с этим вопросом сталкивался?

 ,

alysnix
()

А вот кому IDE для C++?

Форум — Development

Всем привет. Написал себе IDE для плюсов(строго под линукс), от лени, и от того, что другие не нравились. Написана на плюсах, с использованием wxWidgets, плюс clang либа. вот выложил видос как создать проект, сбилдить и пустить аппу.

https://www.youtube.com/watch?v=5DtzFbrjpVw

IDE в принципе уже вполне зрелая, несколько проектов на ней сделано, без нареканий. в процессе работы над этими проектами она просто обрастала фичами.

Интерфейс намеренно минималистичный, намеренно старался максимальное место экрана отдавать под редакторы. Все вызывается из меню, коих много, чтобы не перегружать экран кнопками и контролами.

исходники не выкладываю. поскольку работаю на убунте 20.04, то приветствуются персоны с этой убунтой, чтобы не пересобирать аппу. Если есть вопросы - пишите сюда.

также в этом эккаунте на ютубе, есть и более ранние видео об IDE, где можно получить приблизительное представление о ее фичах, с учетом, что она модернизировалась за это время.

добавленное видео: https://www.youtube.com/watch?v=73qxNBq2Thk

нерафинированный видос - парсинг сорса в фоне. https://www.youtube.com/watch?v=nFyKyAsZEvk

Алексей.

 ,

alysnix
()

одноранговая сеть на openSSL

Форум — Development

короче. есть одноранговая сеть из нод, которые общаются по шифрованным каналам. шифрование на openssl, tls1.3 протокол. нода может как принимать тлс - коннекты, так и сама коннектиться к другим нодам. для простоты эксперимента я сделал самоподписанные сертификаты на общем приватном ключе для каждой ноды. ну как бы не мудрствуя лукаво, на основании общей логики, без особой читки openssl доков.

по моему предположению нода-клиент должна была коннектиться к ноде серверу, сервер должен дать свой сертификат, клиент его проверяет, убеждаясь в валидности сервера, сервер запрашивает сертификат клиента, проверяет, убеждается в валидности клиента и соединение поднимается.

все работает на одной машине и в качестве валидных сертификатов используется одна общая дира, разумеется хешированная c_rehash. заметим, что все сертификаты на одном ключе.

вот тут начинается какая-то пурга. сервер принимает от клиента сертификат и гнусно ругается -

The passed certificate is self-signed and the same certificate cannot be found in the list of trusted certificates.

это при том,что все сертификаты лежат в одной дире и не найти его он не может. раз уж свой нашел, то и клиентский найдет. или тут ошибка не вполне корректно выводится, или вообще нельзя делать самоподписанные сертификаты на общем ключе, класть их в трастед диру и на этом пытаться поднять tls соединения.

то есть первая мысль тут - вообще нельзя так делать, а делать самоподписанный рутовый сертификат, от него городить сертификаты нод, и в качестве доверенного сертификата давать рутовый, а раз сертификаты нод им подписаны, то все проверки будет нормально проходить?

и вообще - можно ли на openssl соединить две ноды, имея только общий ключ и по самоподписанному сертификату на этом ключе у каждой?

 

alysnix
()

(с++)ищется лучший способ обнаружить, что ssl соединение разорвано.

Форум — Development

задача. две аппы общаются между собой по ssl соединению через tcp(OpenSSL). Общение идет по неблокирующему сокету, с таймаутами. одна аппа отваливается(неважно как, даже отрывом кабеля), другая должна красиво это понять. кондовый способ - при чтении из такого оборванного соединения, SSL_read функция возвратит соотв. ошибку и тут ее можно обработать.

но это пока не наш путь, в силу архитектуры аппы.

вопрос. можно ли не читая впрямую, понять из обьекта SSL(это дескриптор SSL соединения в OpenSSL), что низлежащий сокет находится в невалидном состоянии, не копаясь в самом сокете.

короче надо функцию bool ssl_connected(..).

ps. также есть понимание, что SSL_peak и анализ ошибки даст понимание о разорванности соединения. вопрос…кроме этого, можно чем нибудь еще воспользоваться?

 

alysnix
()

вопрос по openSSL - таймауты и проч.

Форум — Development

есть абстрактный байтовый канал для обмена сообщениями, пока внутри реализован на неблокирующих tcp сокетах. операции чтения с таймаутами, а также сокеты периодически переводятся в небуферизованный режим, в моменты диалогов. хочу приделать криптование на openSSL.

вот вопрос, а на openSSL можно реализовать таймаут(вроде можно пишут в инете, но есть ньюансы), но вопрос с небуферизованным режимом внутреннего tcp сокета пока неясен. на своем сокете буферизация делается через игру с параметром TCP_NODLEAY. типа int lret = setsockopt( fhandle, IPPROTO_TCP, TCP_NODELAY, &lflag, sizeof(lflag) );

а в openSSL даже до сокета вроде добраться нельзя. а если можно, она выдержит такое рукоприкладство? спасибо.

 

alysnix
()

ubuntu 20.04, ноут, athlon 300u, встройка Vega 3, траблы в sauerbraten

Форум — Games

сам я в игры не играю, но приходится, поскольку карантин. решил с ребенком порубиться в стрелялку в локальной сети. поставил sauerbraten. поставил пакеты, что он хочет - libSDL1.2. в убунте 20.04 стоят по дефолту libSDL2.0… все стартует, но текстуры и битмапы превращаются в мусор, а поскольку там все на битмапах - прочитать даже меню невозможно. это на лаптопе.

а на моем компе - все отлично, там убунта 16.04, и проц интел core i3 3225(ему лет 150), со встройкой.

куда копать непонятно. похожая ситуация и с AssaultCube, на моем - все отлично, на лаптопе - есть похожие артефакты с битмапами, но там их существенно меньше и играть можно.

поможите кто чем может.

 

alysnix
()

ubuntu 20.04, не видно своей точки доступа.

Форум — Linux-hardware

такое вот дело. если случается проблема с провайдером(я раздаю линию через домашний wifi), то есть пропадает интернет, это иногда приводит к тому, что на лаптопе(ubuntu 20.04) пропадает в списке видимых точек доступа моя домашняя. всех вокруг видно, ее - нет. причем планшеты и смартфоны ее видят. а вот лаптоп - не желает. если переименовать точку на другое имя, то она видна. такое впечатление что она попадает в какой-то блеклист унутре оси. что это вообще? как бороцца? спасибо

 ,

alysnix
()

линукс ноут для школьника.

Форум — Linux-hardware

Ищу вот ноут для школьника, чтобы линукс, ну там убунта какая-нить на него вставала без проблем, подарок на ДР. бюджет в районе 25 тыр рублей, москва.

я не сторонник ноутов, потому и не знаток особо. всегда пользовался станционаром, полазил по рынку - получается это модель уровня Core i3 7xxx, 4 гига памяти, в возможностью доставить еще 4 гига. понятно, что 4 гига для 64 бит ОС, это почти в обрез. Какие вообще нормальные производители по цене-качество, может у кого есть такой недорогой ноут, и есть опыт использования? короче обьект - девочка 14 лет, будет серфить, удаленно учиться, киношки смотреть, вот чтобы не было танцев с бубном с драйверами и меньше мороки. винду не хочу пока.

сначала хотелось бы выбрать производителя, а потом среди его линейки найти то, что по цене подходит и возможности апгрейда памяти.

спасибо.

 , ,

alysnix
()

Потестите свой GCC. у меня бага

Форум — Development

версия с репы такая: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

опции компилятора: -std=c++11 -Wall -Wextra -Wshadow -Winit-self -Wredundant-decls -Wcast-align -Wundef -Wfloat-equal -Wunreachable-code -Wmissing-include-dirs -Wswitch-default -fno-rtti -fno-exceptions

код

#include <cstring>
#include <iostream>

class StringRef{
public:	
	const std::string &_ref; //const reference to some string
	StringRef(const std::string &fs):_ref(fs){}
};

//print two strings 
void printTwoStrings(const StringRef &ft, const std::string &fs){
	std::cout<<"\nmust be: A  B > ";
	std::cout<< ft._ref <<"  " << fs << "\n";
}

//print string ref only
void printRef(StringRef &ft){
	std::cout<<"\ntrying to print string ref";
	std::cout<< ft._ref << "\n";
}


int main(){
//incorrect behavior - reference to local object
	StringRef lt("A"); 
	printTwoStrings(lt,"B");

//correct behavior - reference to temporary object
	printTwoStrings(StringRef("A"),"B");

	//printRef(lt); //it crashes

//just wait
	std::string ls;
	getline(std::cin,ls);
}

печатает в неверном случае B B, а должно быть A B.

На clang-6.0 все нормально.

 

alysnix
()

Visual Studio Code - хорошо ли это?

Форум — Development

Для плюсования под линуксом давно использую CodeBlocks. Пытался вьехать в VS code, но как-то не пошло. И сложно, и неудобно, и тормозно и память ест изрядно. вопрос - есть таки у кого-то опыт использования vs code для c++? Как впечатления?

 ,

alysnix
()

язычок вот написал

Форум — Development

написал язычок и компилятор, поскольку это модно и молодежно.

пример теста(форматирование частично слетело, как уж есть):

//some tests fot compiler
definition Tests
	fun testAll()
end Tests

//##########################
module Tests
	import
		SYSTEM
		Strings
		Con = Console
		IO
		Suite = TestHelper

	alias
		assert	= TestHelper.assert
		error		= TestHelper.error
		write		= Con.write
		writeLn	= Con.writeLn
		writeInt= Con.writeDec
		OK 			= TestHelper.ok


//test type constructors
	type
		WeekDay			= enum (one,two,three)
		Colors 			= enum (White, Red, Blue, Green, Black)
		Record2d 		= record var _x,_y:int end
		SetOfColors = setof (Colors)
		FuncType  	= fun		(int,int):int

//############
	var //global vars
		Res:int
		lint:int

//###########################
	//func OK() {	Con.writeLn("..OK")	}

	fun testLocalPointer():bool {
		const Val = 777;
		let lx=0;
		var lp:^int = addr(lx);

		lp^=Val;
		return lx==Val
	}

	fun testEnum():bool {
		const	cc = WeekDay.two
		var		lday:WeekDay=WeekDay.two;

		write("testEnum..")
		case lday
		of WeekDay.two	:	return true
		else error("wrong case selected 1")
		..

		case lday
		of cc	:	return true
		else error("wrong case selected 2")
		..

		return false
	}

	fun testArray():bool {
		return true
	}

	fun testRecord():bool {
		return true
	}

	fun testTypes(){
		Suite.test(testLocalPointer, "testLocalPointer")
		Suite.test(testEnum,"test enum")
		Suite.test(testArray,"test array")
		Suite.test(testRecord,"test record")
	}

//###############################
//test statemens
//###############################
	fun testRepeat(fx:int) {
		write("Test repeat...")
		repeat
			if fx%100==0 { write("*")}
		until --fx == 0
		OK()
	}

	fun testLoop(floops:int) {
		let	lx = 0;
		let lloops=floops;

		write("testLoop..")
		while floops>0 do
			++lx
			floops-=1
		..
		TestHelper.assert(lx==lloops,"error in testLoop")
		//test real loop
		lx=1000
		loop
			lx-=1
			if lx==0 do break ..
		..
		OK()
	}

	fun testIf(){}

	fun testWhile(){}

	fun testCase() {
		var lx:int=5;
		write("testCase..")
		case lx
		of 1,1+1,1+2:	error("1")
		of 4:					error("2")
		of 5:					writeLn("case 5 selected") //must be selected
		of 12:				error("3")
		else					error("4")
		..
		OK()
	}

	fun testFinally() {
 		write("Test finally..")
 		return

	finally
		write("FINALLY passed correctly")
		OK()
	}

	fun testStatements(){
		testRepeat(1000)
		testLoop(1000)
		testIf()
		testWhile()
		testCase()
		testFinally()
	}

//################################
//################################

	fun logOpsTest() {
	let
		lt=true
		lf=false;

		write("logOperationTest..")
		assert(not (lt and lf), "boolean and error")
		assert(lt or lf, "boolean or error")
		OK()
	}


//########

	var	Depth:int=0

	fun
		incr(i:int):int {return i+1}
		decr(i:int):int {return i-1}

	fun testRecursion(fx:int) {
		write("Recursion..")
		write("*")
		Depth = incr(Depth)		//Depth+=1
		if fx>0 { testRecursion(fx-1) }
		Depth = decr(Depth) //Depth-=1
		if Depth==0 {
			write("out")
		}
		//OK()
	}

	fun testMemory(fsize:int) {
		precond fsize>0;
		var	lptr: address = nil;
		write("TEST MEMORY..")
		lptr = SYSTEM.allocate(fsize)
		write("allocated..")
		SYSTEM.free(lptr)
		write("deallocated..")
		OK()
	}

	fun testIndex() {
		var	ls:seq(char,10);
		let i=0;

		write("testIndex(must be 'alex 1234')..")
		ls[i]='a'
		ls[++i]='l'
		ls[++i]='e'
		ls[++i]='x'
		ls[++i]=' '
		ls[++i]='1'
		ls[++i]='2'
		ls[++i]='3'
		ls[++i]='4'
		ls[++i]=char(0)
		write(ls)
		OK()
	}

	fun testVarParam(var fvar:int) {
		write("Test VAR param(value must be 777)..");
		write("variable parameter is ");
		writeInt(fvar);
		OK();
	}

	fun testFiles() {
	var
		lf			:IO.File
		i,lsize	:int
		lok			:bool

		fun printCh(ff:IO.File){ //read char and print it
			precond ff # IO.NilFile;
			Console.writeChar(char(IO.fread(ff)))
		}

		do
		lf=IO.fopen("test.als") //open this file
		assert(lf#IO.NilFile,"cannot open file")
		lsize=IO.fsize(lf)		//get file size
		i=0
		while i<lsize { //print all the file to console
			printCh(lf)
			i+=1
		}

	finally //finally close the file
		lok = IO.fclose(lf) //close the file
		if not lok do error("cannot close file")..
		writeLn("file closed")
	}

	//Test file creation and writing
	fun testCreateFile() {
		let
			i=100
			lfile = IO.fcreate("xxx.txt")
			lok = false;

		//var	lfile:IO.File;
		assert(lfile#IO.NilFile,"cannot create file")
		while i>0 do
			lok = IO.fwrite(lfile,'X')
			--i
		..
		lok = IO.fclose(lfile)
	}

/*
	func testFileStat()
	var
		lf:IO.File
		lok:bool
		lstat:IO.FileInfo
	do
		lf 	= IO.fopen("test.als")
		lok = IO.finfo(lf, lstat)
		if (not lok) Error("cannot get file statistic") ..
	finally
		lok = IO.fclose(lf)
	..testFileStat
*/

	cluster MyGroup
		const
			c1=100
			c2=200
			c3=300
		type
			LocalInt = int

		//func One():int	return 1	..One
	end MyGroup

	@testGroup(){
		let	lx = MyGroup.c1;
		write("TEST GROUP..")
		writeInt(lx)	write(",")
		writeInt(MyGroup.c2)	write(",")
		writeInt(MyGroup.c3)
		OK()
	}


//module TestFunctionType
	@FF1(in fs:Strings.String) = writeLn(fs) ..
	@FF2(i,j:int)= ..

	type ffuu = @(int,int)

/*
	func testFunctionType()
	var
		lf	:func(int,int)
		lfs :func(in Strings.String)
		lff :func(int):func(int) 			//function return function
	do
		lf 	= FF2
		lfs = FF1
		//lfs("CALLING FORMAL FUNCTION")

		//lff = FF2
		//lfs = actualFunction
		//lfs("Formal Function Go")
	..testFunctionType
*/


//end module
	fun	failPrecond(fval :int) {
		precond fval<10 //this precondition must be failed by caller
		raise TestHelper.TestError
	}

	fun testPrecond():bool {
		//write("precondition test..")
		try
			failPrecond(100)
		catch SYSTEM.PrecondEx {
			return true
			//writeLn("OK-precondition failed as needed")
		else
			return false
			//writeLn("ERROR - precondition failed WRONG")
		}
	}

	fun testTrueFalse():bool {
		var lb,lres:bool;
		//write("testTrueFalse..")
		return not (true and false) or (true or false)
	}

	fun inout(in fin:Record2d, out fout:Record2d) {
		fout = fin
	}

/*
	func testInOutParams()
	do
	end testInOutParams
*/

	fun testStringConstantInit() {
		var	lb:seq(char,30)="TestingString";
		write("testStringConst..")
		Con.print (lb)
		writeLn(" - if text is 'TestingString' then OK")
		OK()
	}

	fun testAll() {
		writeLn("#nModule Tests STARTED:")
		testTypes()
		testStatements()



		testIndex()
		//testEnum()
		testRecursion(20)
		testMemory(1000)
		testRepeat(1000)
		lint = 777
		testVarParam(var lint)

		testGroup()
//		testFiles() //Program exited with return code: 0
//		T.testCreateFile()
//		T.testFileStat()
		logOpsTest()
		Suite.test(testPrecond,"test precondition")
		Suite.test(testTrueFalse, "test boolean expressions")
		writeLn("END OF TESTS")
	}

do
	//testAll()
	//Con.writeLn(" Daddy is very big popa")
end Tests.

 

alysnix
()

RSS подписка на новые темы