aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/verilog/verilog_frontend.h
Commit message (Expand)AuthorAgeFilesLines
* frontend: cleanup to use more ID::*, more dict<> instead of map<>Eddie Hung2020-05-041-1/+1
* Merge pull request #1811 from PeterCrozier/typedef_scopeN. Engelhardt2020-03-301-2/+3
|\
| * Support module/package/interface/block scope for typedef names.Peter Crozier2020-03-231-2/+3
* | Add support for SystemVerilog-style `define to Verilog frontendRupert Swarbrick2020-03-271-4/+0
|/
* Parser changes to support typedef.Peter2020-03-221-0/+6
* Closes #1717. Add more precise Verilog source location information to AST and...Alberto Gonzalez2020-02-231-1/+0
* Add specify parserClifford Wolf2019-04-231-5/+2
* New behavior for front-end handling of whiteboxesClifford Wolf2019-04-201-2/+5
* Add "whitebox" attribute, add "read_verilog -wb"Clifford Wolf2019-04-181-0/+3
* Add "read_verilog -noassert -noassume -assert-assumes"Clifford Wolf2018-09-241-0/+9
* Remember global declarations and defines accross read_verilog callsClifford Wolf2016-11-151-1/+2
* Added read_verilog -norestrict -assume-assertsClifford Wolf2016-08-261-0/+6
* No tristate warning message for "read_verilog -lib"Clifford Wolf2016-07-231-0/+3
* Fixed trailing whitespacesClifford Wolf2015-07-021-2/+2
* Added non-std verilog assume() statementClifford Wolf2015-02-261-0/+3
* Added warning for use of 'z' constants in HDLClifford Wolf2014-11-141-1/+1
* Changed frontend-api from FILE to std::istreamClifford Wolf2014-08-231-1/+4
* Moved some stuff to kernel/yosys.{h,cc}, using Yosys:: namespaceClifford Wolf2014-07-311-1/+5
* Added read_verilog -sv options, added support for bit, logic,Clifford Wolf2014-06-121-0/+3
* Added Verilog support for "`default_nettype none"Clifford Wolf2014-02-171-0/+3
* Enable {* .. *} feature per default (removes dependency to REJECT feature in ...Clifford Wolf2013-11-221-3/+0
* Added support for include directories with the new '-I' argument of theJohann Glaser2013-08-201-1/+2
* added option '-Dname[=definition]' to command 'read_verilog'Johann Glaser2013-05-191-1/+1
* initial importClifford Wolf2013-01-051-0/+62
ass="highlight">
# -*- coding: utf-8 -*-
import pytest
from pybind11_tests import operators as m
from pybind11_tests import ConstructorStats


def test_operator_overloading():
    v1 = m.Vector2(1, 2)
    v2 = m.Vector(3, -1)
    v3 = m.Vector2(1, 2)  # Same value as v1, but different instance.
    assert v1 is not v3

    assert str(v1) == "[1.000000, 2.000000]"
    assert str(v2) == "[3.000000, -1.000000]"

    assert str(-v2) == "[-3.000000, 1.000000]"

    assert str(v1 + v2) == "[4.000000, 1.000000]"
    assert str(v1 - v2) == "[-2.000000, 3.000000]"
    assert str(v1 - 8) == "[-7.000000, -6.000000]"
    assert str(v1 + 8) == "[9.000000, 10.000000]"
    assert str(v1 * 8) == "[8.000000, 16.000000]"
    assert str(v1 / 8) == "[0.125000, 0.250000]"
    assert str(8 - v1) == "[7.000000, 6.000000]"
    assert str(8 + v1) == "[9.000000, 10.000000]"
    assert str(8 * v1) == "[8.000000, 16.000000]"
    assert str(8 / v1) == "[8.000000, 4.000000]"
    assert str(v1 * v2) == "[3.000000, -2.000000]"
    assert str(v2 / v1) == "[3.000000, -0.500000]"

    assert v1 == v3
    assert v1 != v2
    assert hash(v1) == 4
    # TODO(eric.cousineau): Make this work.
    # assert abs(v1) == "abs(Vector2)"

    v1 += 2 * v2
    assert str(v1) == "[7.000000, 0.000000]"
    v1 -= v2
    assert str(v1) == "[4.000000, 1.000000]"
    v1 *= 2
    assert str(v1) == "[8.000000, 2.000000]"
    v1 /= 16
    assert str(v1) == "[0.500000, 0.125000]"
    v1 *= v2
    assert str(v1) == "[1.500000, -0.125000]"
    v2 /= v1
    assert str(v2) == "[2.000000, 8.000000]"

    cstats = ConstructorStats.get(m.Vector2)
    assert cstats.alive() == 3
    del v1
    assert cstats.alive() == 2
    del v2
    assert cstats.alive() == 1
    del v3
    assert cstats.alive() == 0
    assert cstats.values() == [
        "[1.000000, 2.000000]",
        "[3.000000, -1.000000]",
        "[1.000000, 2.000000]",
        "[-3.000000, 1.000000]",
        "[4.000000, 1.000000]",
        "[-2.000000, 3.000000]",
        "[-7.000000, -6.000000]",
        "[9.000000, 10.000000]",
        "[8.000000, 16.000000]",
        "[0.125000, 0.250000]",
        "[7.000000, 6.000000]",
        "[9.000000, 10.000000]",
        "[8.000000, 16.000000]",
        "[8.000000, 4.000000]",
        "[3.000000, -2.000000]",
        "[3.000000, -0.500000]",
        "[6.000000, -2.000000]",
    ]
    assert cstats.default_constructions == 0
    assert cstats.copy_constructions == 0
    assert cstats.move_constructions >= 10