« first day (1007 days earlier)      last day (2173 days later) » 

12:34
@Comintern monking! Yesterday was a crazy day at the office. This is the first chance I've really even had to check in here. We'll hook up this evening it that'll work for you.
12:52
@PeterMTaylor oops! Finder will be null in the parser state until the initial parse.. Gotta fix that =)
single-character fix in C# 6, whole conditional otherwise.. Hmm..
Now, if we can purge the clean up of my stupid mistakes from the beginning of that, it would make a nice tutorial!
I even got TeamViewer installed, and have been playing with checking on my home machine from my Android phone here at work. propeller on beanie nears max RPM
@IvenBach I never made a PR from the main repo to my fork. Instead I use the method described in the following link to get my local up to date. help.github.com/articles/syncing-a-fork
0
A: Excel VBA: Inserting today's date into last row

FreeManI've cleaned up and refactored to eliminate the redundant code Private Sub Workbook_Open() Const startCol As Long = 1 Const colCountToSet As Long = 5 Const skipColCount As Long = 3 Dim endRow As Long endRow = Cells(Rows.Count, 1).End(xlUp).Row Dim todaysDate As String todaysDat...

13:59
@FreeMan Sounds like a plan.
@FreeMan String comparisons for dates?
Consider:
If IsDate(Cells(endRow, startCol)) Then
    If Int(CDate(Cells(endRow, startCol))) <> Date Then
        '...
@Comintern It works... :)
but isn't ideal.
The Date property returns the current date without the time portion, and you can strip the time from a Date variable by flooring it.
@M.Doerner lol, I git it wrong
14:19
@Comintern borrowed that and tweaked my answer. Sometimes you know stuff, but you're following someone else's example and get stuck in their rut...
I'm not entirely sure what this is about, but I'm going to star it on general principle.
14:43
@Mat'sMug this applies to you too
makes not to self: do not get stuck in other peoples' ruts
I wish every SO answer in wouldn't use implicit anything. SO gets way too many questions caused by implicit things.
Yeah, I used RD to format the code, but I failed to inspect.
@Mat'sMug Are we talking more like Range("A1") or With ThisWorkbook.Sheets(1) --> .Range("A1") or both?
14:58
Cells, Columns, Names, Range, and Rows used without a qualifying object all implicitly refer to the ActiveSheet
hmm wait no I think Names implicitly refers to the ActiveWorkbook
you see that's why explicit matters :)
I figured it was the first, just making sure I wasn't making waves with the second :)
a With block is a neat way to easily qualify all Range and Cells calls with a single character
Agreed, and faster
Do you mind if I ask a medium length class question?
I tend to prefer using a With block when it holds the object reference though. using it to "save typing" feels wrong. might be my C# habits though.
@puzzlepiece87 sure go ahead
Am I doing this right?

The user chooses custom widgets or standard widgets --> This determines if we get the widget details from the Userform or sheet.
The user chooses from 5 widget categories, and each category has two color choices. Each color choice has a different supplier.

So far my plan is to have a classWidgets with a boolean .Custom property, a string .DataSource property, a integer(long) .Category property, a string .Color property, and a string .Supplier property.

I want my logic to input every property except supplier and then output the supplier property.
15:04
@FreeMan lol - that was in reference to: chat.stackexchange.com/transcript/message/35917193#35917193
@puzzlepiece87 probably. I might have an interface for "gets the widget details from userform or sheet" part, e.g. IWidgetInfoProvider, so that the code doesn't need to care where the info is coming from
also please don't prefix class names with class
imagine how annoying the VBA standard library would be if all classes had a cls or class prefix
Yes sir, I will try.
how you model your classes depends pretty much exclusively on how much detail your application needs to have: e.g. a Supplier string can be enough for one use case, but in another case you might need a supplier's country, currency and address - then you'd have a Supplier class
hence if the string represents a supplier's name, I'd call it SupplierName, not Supplier
if colors have a code and a description, or a palette ID, an index and a name, ...see where I'm going?
Oh, it doesn't - that was me trying to make my question as short and understandable as possible :P
But I do see where you are going
The actual reality is that analysts are modifying a query via GUI, using either the default settings on a sheet or custom settings on a userform.
I wouldn't bother with the .Custom boolean or .DataSource then
I'd make a class that encapsulates all the settings regardless of where they come from
15:14
There are really 7 potential replacements (categories), multiple replacement choices in each category (colors), and then once I know which option they chose (supplier) I then use that to insert the appropriate replacement string.
wait so you're making a SQL injection GUI?
5
Got it, so use a class for the settings and an interface that handles the data source part.
Yes lol
Already made
make it work, then put it up on CR ;-)
And I also wanted people to be able to visually inspect the query if they wanted, but needed it to be readable in a spreadsheet, while acknowledging that Excel can only pass single strings via ADO
Okay, I'll try to shape it up now with the class and then I'll post that portion of the program :)
15:17
the interesting part will be the part that works with the settings / populates the data from the UI/sheet
I'll need to read up on the interface part - I could probably guess how to do it, but unless I've been making interfaces already without realizing it I've never made one.
and the part that takes these values and builds the SQL string
Okay, brace yourself for it to be less interesting than you think, but if you like it, great :)
especially the part that builds the SQL string
I like it, it's one of the prettier and more effective things I've done (I have three formal "programs" I've built for my team that all had to be as human-proof as possible, much more so than the countless smaller "macros" or whatever)
15:19
@puzzlepiece87 Wait, where did you get the impression that Excel can only pass single strings via ADO?
Should I title the question SQL Injection GUI so I can make the HNQ for CR finally lol?
sounds like a good plan
@puzzlepiece87 that's definitely a winner
but I'd definitely go with parameterized commands
@Comintern My experience only but I'm probably doing something wrong.
15:21
what happens if I enter "Shirts'); DROP TABLE Products;--" for a category (or any other string field)?
if your SQL string "builder" looks like sql = sql & "WHERE Category = '" & category & "' AND " & _...
..then you're in trouble :)
the SQL string that hits the server goes
I haven't had to worry about that for two reasons :P
WHERE Category = 'Shirts'); DROP TABLE Products;--' AND blablablawhatever it's all commented-out
1. All the analysts only have read access and this is an internal only program
2. It would be on them if they ran that from their computers.
But I'll fix it up :)
kudos for using Windows Authentication
Thanks, all credit goes to the dbas.
Since we're governed by HIPAA things are locked down pretty tight :)
They do a good job.
(health privacy laws if anyone's not familiar)
15:27
and if you don't want them to force you to use stored procedures I'd recommend you go with parameterized queries ;-)
"it's only internal" isn't an excuse
WHERE Name = 'O'Brien, John'
^^ fails
any disgruntled tech that has access to it can damage your data, or worse, potentially extract data they shouldn't have access to - and if they're about to resign, you can't even fire them for it
SQL injection is serious shit
but security concerns aside, it's an open door for stupid bugs, like O'Connor having a single quote that breaks your input field
^
That's the much more common failure point.
O'Connor needs a terminator.
lol
"I know! I'll just double-up/escape the single quotes in the user input!" <-- famous last words, don't do that
:) Thanks, these are good points
I'm a member of security.stackexchange.com, I think one of their top posts is how to eliminate SQL injection, I'll follow their advice to do it right
15:34
@Comintern I'ma gonna go with my standard, "5,000 volts @ 10,000 amps solves the problem once and for all" should be the RD response to that code
4
lol
there's now a [failing] test in RD for it
I'll start reading up on the ExtremelyRawOutput APIs.
actually..
10 hours ago, by Mat's Mug
        [TestMethod]
        public void AmbiguousNameSelectsSmallestScopedDeclaration()
        {
            var code = @"
Option Explicit

Public Sub foo()
    Dim foo As Long
    foo = 42
    Debug.Print foo
End Sub
";
            var vbe = new MockVbeBuilder()
                .ProjectBuilder("foo", ProjectProtection.Unprotected)
                .AddComponent("foo", ComponentType.StandardModule, code, new Selection(6, 19, 6, 19))
                .MockVbeBuilder()
                .Build();

            var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
not exactly for that, but evil/ambiguous enough to make a point
@Mat'sMug Not arguing with you, just explaining more about why it hasn't been a priority of mine, all of these analysts already have their own SQL access to multiple databases, so I'm not sure I'm opening any new gateways for them. Unless SQL Server, etc. handles privilege escalation attempts better than via ADO?
But I agree these are good practices and I'll do my best to implement them today :)
put it this way: string-concatenated SQL commands are bugs waiting to happen, and make you look sloppy
15:37
There are some rare exceptions.
MS-Access being an SQL injection engine
2
et: Both parts are important to me
if you use parameterized commands, you can proudly show your code to the DBA's and they'll pat you on the back and say "well done kid!"
Yes, and I can get hired professionally if needed, maybe!
If you don't use parameters, I'd skip the showing it to the DBA part. ;-)
15:40
@Comintern You don't enjoy rage-strokes?
@Mat'sMug a more refined version of a SQL injection GUI
So, simple question. If I have a parameterized query UPDATE tablex SET Field1 = <param1>, and pass param1 = 'Bobby; DROP Tables; --, how does having that be a parameter prevent table damage?
SQL Server receives the value as a parameter, not as part of the command string itself
let the server deal with parameters, don't do it yourself
answer: because being a parameter, the SQL engine treats the Bobby; DROP tables; -- as the value, not as a just a complex string to be executed.
weird, the answer hit me as I hit Enter.
15:51
you be rubberducking in here
6
See, oldDog.canLearnNewTricks != False
hmm, switching to VS2015/C#6 means I can't RD at work anymore
which is probably a good thing
probably, yes ...
possibly not for Rubberduck directly, but definitely for your work-life-rubberduck-se-balance ;)
I wouldn't have much free time to work on RD if I need to flip burgers 20hrs/day to pay for that house we're getting
15:56
[retailcoder/Rubberduck] retailcoder pushed commit 8457ab78 to rd-next: fixed possible NRE in FindSelectedDeclaration
[retailcoder/Rubberduck] retailcoder pushed commit c4a4adfd to rd-next: removed unused parameter
@Mat'sMug Congrats on the house!
thanks :)
@Comintern Double-checking another impression: it's been my experience that if I run a second query via ADO to SQL Server, it won't let me drop temp tables that I created in the first query, but they're definitely still there. I'm probably doing something wrong, right?
#temp tables?
16:00
a #temp table is only available in the session that creates it IIRC
try a ##temp table ..but then you might get concurrency issues
I worked around that problem by incrementing the temp tables, so if the tables are #Temp1, Temp2 in the query, the first query run uses #Temp11, Temp21, the second run uses #Temp12, #Temp22, etc
best drop a #temp table in the same session that creates it
or use @tableVariables, which don't even need to be dropped
Got it, that would probably be the most eloquent solution. Currently my query has these sort of lines at the top:
if object_id('tempdb..#DRS1') is not null drop table #DRS1;
Wait no, I drop them as I go along
why do you need temp tables?
in the same session
I use them to store intermediate results. Find claims that match this condition --> get additional data about those claims.
16:03
I find they're often a MySQL-ish approach to what SQL Server implements neatly with a CTE
Got it, I can't prioritize that at the moment but I'll make a note to look into CTEs
with sales as (
    select CustomerId, CalendarDateId, sum(TransactionAmount) Amount from dbo.Sales group by CustomerId, CalendarDateId)
select customer.Name, calendar.FiscalYear, calendar.FiscalWeekOfYear, Amount
from sales
inner join dbo.Customers customer on sales.CustomerId = customer.Id
inner join dbo.Calendars calendar on sales.CalendarDateId = sales.CalendarDateId
CTE's can even be recursive if you need them to be
take that, MySQL
^ contrived example, CTE isn't really warranted here
Oh, I've used that before, I didn't realize the name
What advantages does that have over select * into #Temptable?
CPU/memory vs disk I/O
I use that with Oracle since the privileges are annoying and read-only people can't make temp tables
16:11
I/O is usually slower
Ah, so CTE uses more memory but less disk I/O?
Got it, thanks
a #temp table is physically created
@GSerg - In this specific case, sure. But the presence of a CodeName property on the Excel object doesn't make the search unreliable. AFAIK examining the properties is the only way to determine whether the underlying document module is a Workbook or a Worksheet when given an arbitrary VBComponent. If you have a better method, the RD devs would love to know it. — Comintern 6 secs ago
@Comintern I don't understand what he's saying
He's saying that Workbook and Worksheet have a CodeName property. That makes no difference if you only have the VBComponent.
16:19
but we can get the properties from the component
Hi
I've been thinking. I wonder if this can be cleaned up some:
var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object));
parser.Parse(new CancellationTokenSource());
if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); }
Maybe make a CreateAndParse method?
that returns the RPS?
that'd be neat
For most of the tests, it doesn't need to return anything.
But sure, it can return the state, if I find a test that uses the state outside the parser that actually works like that.
I think there are a couple.
huh, a lot of tests use the state to pull declarations and identifier references to assert on
16:31
OK.
I'm mostly familiar with the refactoring tests, and the inspection tests.
don't inspection tests inject the state into the inspection?
Hmm, I think you are right.
Whatever. Not been here for about 6 months.
I need to update my resume as soon as I get a PR in to make the end date "current" again.
@Comintern I'll leave you the comment thread, I think he's ignoring me
16:39
I'm good with were I left it.
I think he's thinking "pffft. they're nuts"
Aren't we?
I guess :)
@Mat'sMug VS 2017 adds a ".vs" folder to the directory. Can I add ignores for ".vs" and ".vscode" directories to the git ignore?
16:42
sure
did you verify that the solution still opens in VS2015?
Yeah.
It doesn't change the .sln.
glad they ended up fixing that. VS2005 -> VS2008 -> VS2010 was a PITA
:renames all the .vs files in his branch: <-- files changed: 0
That's what they are trying to fix.
The new one doesn't have nearly as much information in it.
So, it is less likely it will have to happen in the future.
0
Q: Error handling to restart Word from Excel inside a loop

R3uKI'm often opening, from Excel, all Word documents inside a folder. And sometimes during the treatments, Word crash without throwing an error. So I've added a bit of error handling to restart Word and reopen the doc I was working on. I'm just wondering if I'm doing it properly, or if I should...

0
Q: Import Title / Data header Validation Code

Rhys WilliamsI would like some feed back on the following code. The Idea is as follows, I have a control spreadsheet which will hold data headers for a variety of reports. The macro will compare the data headers in the report to ones held on the control S/S with the aim to highlight/notify the user any addi...

16:49
ImplicitDefaultMemberAssignmentInspection has no tests :(
[retailcoder/Rubberduck] retailcoder pushed commit d57a1dd5 to rd-next: moved Meta property to IInspectionModel interface; removed Description and Meta overrides in concrete implementations (implemented as virtual in InspectionBase instead).
@Mat'sMug I'm trying to adopt your naming convention for classes. Am I understanding this right that you use Dim (primary property) as (class name)?
[Hosch250/Rubberduck] Hosch250 pushed commit 3c17deec to cleanUpTests: Add .vs and .vscode folders to gitignore
@puzzlepiece87 I only use Dim for locals.. not sure what you're referring to
17:07
OK, I lied. I'm not going to let the "unreliable" thing go.
@GSerg - I agreed that for the OP, using the Excel object directly was easier about an hour ago. You keep coming back to the "less reliable" assertion though. VBComponent.Properties.Count per module type can be considered a constant for any given version of Excel - it's defined in the TypeLibrary and isn't effected by user code. Is there an example where sorting by property count wouldn't be reliable? — Comintern 46 secs ago
Ah sorry, and I probably should have waited until I have a better grasp of the difference between an interface and a class, but you wrote this in your earlier example:
"Dim View As IDailySalesView"
@Comintern IMO the 2nd part of the OP is completely moot, if OP merely keeps the vbcomponent reference instead of discarding it
Is IDailySalesView a class that you're using as an interface? So you're using View as a new instance of that, right? Is the naming convention there "Dim (primary property) as (class name)"?
it's a class that the userform implements, so yeah, an interface
what is a "primary property"??
view is just a variable name referring to the userform object, accessed via its IDailySalesView interface
Oh, that was my guess. I think it was @Comintern that told me that you can make a class have a primary property (so that you can just use Class instead of Class.Property for that property). So I was guessing that was what View was.
Oh okay, then I misunderstood, you were referencing the source of the class rather than a specific property.
17:12
a default property/member
Excuse me, thanks, default property.
yesterday, by Mat's Mug
Public Sub EnterManualFigures()

    Dim View As IDailySalesView
    Set View = New frmManualEntry

    Dim model As New DailySalesModel
    Set View.model = model

    View.Show
    If View.IsCancelled Then Exit Sub

    UpdateReport View.model

End Sub
Dim {variable name} As {type name}
#NoMagic
Yup, that's the one I linked to as well.
No, I get the mechanics, I was just trying to understand the naming convention.
a class that contains only stub members and that's meant to be implemented by other classes will have a capital "I" prefix, for "interface"
Basically I was preparing to write "Dim QuerySubstitutes As QuerySubstitutes" and figured that was wrong.
So I was trying to figure out what I should do instead
17:15
@Mat'sMug There is a lot of magic for us simple people.
@Mat'sMug 'stub members' means that it's only declared (Public Function Thing as String ... End Function) but there's nothing in way of implementation (code that tells it what to do), correct?
correct
hence you don't New up an interface, it's useless all by itself
@Mat'sMug And my wife says I can't learn new things...
Is this a stub member, or not:
'pstrQuerySetting Properties
Public Property Get strQuerySetting() As String
strQuerySetting = pstrQuerySetting
End Property
Public Property Let strQuerySetting(Value As String)
pstrQuerySetting = Value
End Property
Public Property Get QuerySetting() As String
    '**stub**
End Property
Okay great
17:18
if there's content in the body, it's not a stub
an interface defines what a type can do - but it doesn't do anything
Okay, makes sense
That's left for what is implementing it to work out.
[Hosch250/Rubberduck] Hosch250 pushed commit 261fdfcc to cleanUpTests: More cleanup
Thanks @IvenBach
17:20
Declaration, Implementation, Instantiation. Those 3 took me a while to get straightened out in my head, and I still need to think about it sometimes.
@puzzlepiece87 No worries. I'm learning the same info as you right now. It helps me to explain it clearly so I can better internalize it myself.
#TeamWork
OK, requesting review.
I don't really see a way to make things particularly cleaner at this point.
So, any comments before I fix some 700+ other tests?
@Mat'sMug I still can't comprehend why more individuals don't try to help those around them improve. It just makes sense, everyone benefits... I'm grateful to RD and all the assistance this group lends.
@IvenBach I can.
@Hosch250 looks like you're about to delete some 2-3K lines of code :)
17:23
I was on the MS forums for a year or so.
@Mat'sMug Yup.
looks good
I had to write the same article day after day.
Go see hosch250.wordpress.com for the result.
I got off after a while--college, and just couldn't take it anymore.
Umm:
public abstract class VbeTestBase
{
}
I'm going to kill that.
with fire napalm
@M.Doerner That'll be something I'll look at once I'm more experienced.
@Mat'sMug Can I migrate the tester to xUnit while I'm at it? MSTest doesn't support asserting exceptions very well at all.
17:30
MSTest is dead isn't it?
xUnit and NUnit are much better for that (I think xUnit is newer, and .NET-specific, or something).
@Mat'sMug Well, we are using it.
using Microsoft.VisualStudio.TestTools.UnitTesting;
^ I bet that's not available in VS2017
It is.
hmm
what's wrong with [ExpectedException]?
I don't think it is actively supported anymore.
Well, I guess I can use that.
17:31
that's how MSTest asserts exceptions
xUnit you just do Assert.Throws<T>(), or something.
OK, that's another thing to clean up then.
Instead of using try/catch's in the tests.
wait, we have that???
Yeah.
blushes
try
{
    refactoring.Refactor(
        model.Declarations.FirstOrDefault(
            i => i.DeclarationType == Rubberduck.Parsing.Symbols.DeclarationType.ProceduralModule));
}
catch (ArgumentException e)
{
    Assert.AreEqual("Invalid declaration type", e.Message);
    return;
}

Assert.Fail();
yuck!
I think there's more than enough tech debt to pay before we can think of migrating to xUnit
but I don't disagree with ditching MSTest
Oh, I'd do that after everything else.
17:42
@GSerg - Right, and the next version of Excel could remove CodeName. I think the likelihood of either of those things happening is approaching zero. ;-) — Comintern 18 secs ago
^ Do we have anything in RD that might break in a future unspecified version of Office?
[Hosch250/Rubberduck] Hosch250 pushed commit 4a455949 to cleanUpTests: Update RemoveParametersTests
Hello..
Anybody out there??
Hola.
Hi Everyone! I'm new to VBA as well as i'm new to this forum since i'm actively using..
17:43
Hello, we don't associate a lot with the people 'out there'. But we do talk to those that are 'in here'
I have a clarification in VBA. Hope you guys can help me..
Thanks @IvenBach..
We'll answer as best we can.
I have created Different Sub's in the name of a Worksheet. Now, i'm trying to call the Sub in a loop and i'm unable to execute it..
I'm getting a Compile Error: Expected Sub, Function or Property..
Anybody can help??
Can i post the code here for your review??
What's the code look like? It should highlight the line the doesn't compile.
Have you tried posting on Stack Overflow and flagging it with the vba tag? With more people viewing it, not just us, you will may bet more help. It may also help others if they come across your post.
We're more than willing to look at what you have.
17:49
Not sure if anybody have asked like that..
Fine. Lemme post it then..
Thanks..
@IvenBach flagging and tagging are two very different things ;-)
Meta Q: When should the VBA flag be used?
@Mat'sMug It makes sense in my head before it comes out.
Whats the stance on usage of a single sub to return 2 ranges? IE: Sub GetMeGoalSeekAndChangingCell(goalSeekCell as Range, changingCell as range)
Would that violate the SRP or is it better to use a function with a parameter to choose the cell returned?
17:54
Yeah, it is mocked, but it still tests that the properties are set properly.
in the mock
it tests that you've setup your mock properly
Thanks @IvenBach! Have posted my Question. Hope you guys would have a look..
The mock is just a wrapper over the properties, really.
@IvenBach the two seem very closely related, I don't see a problem with it
17:56
private static Mock<IRefactoringPresenterFactory<IEncapsulateFieldPresenter>> SetupFactory(EncapsulateFieldModel model)
{
    var presenter = new Mock<IEncapsulateFieldPresenter>();
    presenter.Setup(p => p.Show()).Returns(model);

    var factory = new Mock<IRefactoringPresenterFactory<IEncapsulateFieldPresenter>>();
    factory.Setup(f => f.Create()).Returns(presenter.Object);
    return factory;
}
@Mat'sMug So long as there is a logical 'tethering' between things then it's usually fine. Just don't have disparate stuff crammed together?
goal seek needs a target and a changing cell, no? IMO makes sense that you might want to get these two cells from the same procedure
but in general, not just this GoalSeek example, anything that's related shouldn't have an issue with feeding in 2 non-instantiated ranges that get instantiated within the sub. No reason to do 2 calls to a function if the same result is logically achieved by a Sub.
"it depends"
:sigh: one of them answers
18:00
IKR
It makes sense to me as well but then all the stuff I've read about SRP and SOLID programming makes me lean towards creating a function that does it. That way it can ultimately be unit tested.
if your Sub has output, you can assert on that output just as well
I'm just not a huge fan of using ByRef parameters as output
it's not just VBA: I'm not a huge fan of out parameters in C# either
but sometimes it's just the best way to go about it
How can a sub have output? AFAIK a sub has a void return type (based on my minimal c# knowledge).
in VBA?
So it'd be GetMeGoalSeekAndChangingCell(ByRef outGoalSeekCell as Range, ByRef outChangingCell as range)
18:04
Public Sub DoSomething(ByRef outParameter1 As Long, ByRef outParameter2 As String)
    outParameter1 = 42
    outParameter2 = "foobar"
End Sub
Since subs don't return anything it's similar to C# void
@IvenBach exactly
love the apps-hungarian out prefix there
see, Hungarian Notation done right is useful
GoalSeek and ChangingCell seem to be coupled. If that's the case, I'd put them into a class - even if it is just something like a Tuple.
That's what I was thinking. Does it come down to splitting ducks/hares/hairs
Either way is permissible, just based on preference?
^^ or, if you encapsulate them into their own type, the Sub can become a Function again, and you're no longer using out params
18:07
Function GetMeGoalSeekAndChangingCell() As WhateverYouCallAGoalSeekChangingCellCombo
Type GoalSeekRanges
SeekCell as Range
ChangeCell as Range
End Type
I wouldn't use a Type for this... VBA structs are... special creatures
might just work though
[Hosch250/Rubberduck] Hosch250 pushed commit 1e654682 to cleanUpTests: Encapsulate field tests
And you can also extend the behavior of WhateverYouCallAGoalSeekChangingCellCombo a lot easier than if it's coupled to a bunch of procedure signatures.
@Comintern Do you have an example for this? I don't fully follow, yet.
18:10
That example I linked on CR the other day is a good example. Take a look at the Name class.
All it really is is a combination of first\last. Lets say that you're passing those around as 2 strings to a bunch of functions.
...and you decide that you need a middle name.
Tying 2 "things" that are associated with each other together with a wrapping class lets you give the combination behavior.
@IvenBach Some of it is because it's a Sisyphean task.
In computer science, object composition (not to be confused with function composition) is a way to combine simple objects or data types into more complex ones. Compositions are a critical building block of many basic data structures, including the tagged union, the linked list, and the binary tree, as well as the object used in object-oriented programming. == Details == In a programming language, when objects are typed, types can often be divided into composite and noncomposite types, and composition can be regarded as a relationship between types: an object of a composite type (e.g. car) "has...
While individuals will improve, it's hard to change the game enough that everyone improves
I have to remind myself it's still worth it in some non-professional areas (like personal maturity) that I'm trying to help people in.
damn we have a lot of inspections
@IvenBach But of course I am extremely grateful to this group as well :)
18:17
[Hosch250/Rubberduck] Hosch250 pushed commit 29e6757f to cleanUpTests: Introduce field and introduce parameter tests
@Comintern Read the article but its still not 'clicking'.
[Hosch250/Rubberduck] Hosch250 pushed commit 4b4a278e to cleanUpTests: Extract interface tests
huh, found a quickfix that was newing up a MessageBox
I suppose there aren't any tests for that one
found a quickfix implemented in a result file
and a result in the quickfix namespace
18:33
[Hosch250/Rubberduck] Hosch250 pushed commit eda0dbbe to cleanUpTests: Move Closer to Usage tests
oops, I broke IParseTreeInspection bindings
Some outside news: Google reCaptcha will no longer be user-facing, hooray
(unless something goes wrong and the user can't work around)
[Hosch250/Rubberduck] Hosch250 pushed commit ee10b5cd to cleanUpTests: Rename tests
18:48
^^ oh, if it thinks you are a computer you'll see the usual reCaptcha, rtfa
@Mat'sMug, I assume you like astrophysics as well? arstechnica.com/science/2017/03/…
The refactorings are done.
?! why is GoalSeek a hidden member of the Range class?
Time for the inspections lunch.
I'm down to 12 broken files
18:53
OK, why is my GeForce update taking so long?
@Mat'sMug I hope we aren't breaking each other's changes.
AssignedByValParameterInspectionTests won't build
private IEnumerable<Rubberduck.Inspections.Abstract.InspectionResultBase> GetInspectionResults(IVBE vbe)
the type needs to change to Rubberduck.Parsing.Inspections.Abstract.IInspectionResult
Is that going to interfere with my test changes?
probably, but should be a "take both" merge
@Comintern codereview.stackexchange.com/questions/124253/… is what you are referring to?

« first day (1007 days earlier)      last day (2173 days later) »